直接使用go-smtp包 ,為了防止亂碼 , 主題subject進行了base64編碼
import ( "encoding/base64" "github.com/emersion/go-sasl" "github.com/emersion/go-smtp" "strings" ) func SendSmtp(server string, from string, password string, to []string, subject string, body string) error { auth := sasl.NewPlainClient("", from, password) subjectBase := base64.StdEncoding.EncodeToString([]byte(subject)) msg := strings.NewReader( "From: " + from + "\r\n" + "To: " + strings.Join(to, ",") + "\r\n" + "Subject: =?UTF-8?B?" + subjectBase + "?=\r\n" + "\r\n" + body + "\r\n") err := smtp.SendMail(server, auth, from, to, msg) if err != nil { return err } return nil }
使用的時候 , 注意埠號要加上 ,埠號是25
如果發送失敗 , 可以檢測一下服務器是否允許訪問外網25埠 , 一般騰訊云或者阿里云可能會封閉了訪問25埠 , 并且不允許使用本機搭建的smtp服務進行發送 , 防止垃圾郵件泛濫
可以使用telnet smtp.sina.cn 25 這樣的命令檢測是否允許訪問25埠
現在郵箱都是使用授權碼進行驗證的 , 注意是和登錄密碼有區別的 , 授權碼一般在設定里面開啟 , 只能重置生成不能修改
SendSmtp("smtp.sina.cn:25","[email protected]","xxxxx",[]string{"[email protected]"},"你好","郵件")
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/261234.html
標籤:Go
上一篇:go好用的型別轉換第三方組件
