使用github.com/emersion/go-smtp , 通過smtp發送通知郵件內容
加上html代碼的內容后 , 在一些郵箱里會被原樣展示 , 并沒有展示成html , 原因是沒有加Content-Type , 加上之后就可以了
tools/smtp.go
package tools 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" + "Content-Type: text/html; charset=UTF-8" + "\r\n\r\n" + body + "\r\n") err := smtp.SendMail(server, auth, from, to, msg) if err != nil { return err } return nil }
測驗用例
tools/smtp_test.go
package tools import "testing" func TestSendSmtp(t *testing.T) { body := "<a href=''>hello</a>" SendSmtp("smtp.sina.cn:25", "[email protected]", "xxxxx", []string{"[email protected]"}, "123456", body) }
當前代碼位于tools包下面 , 也就是tools/目錄下 , 執行測驗用例時 , 使用如下的命令
go test tools/smtp.go tools/smtp_test.go
內容里是a標簽 , 結果可以正常的展示成連接的形式
還要注意我的subject是經過base64編碼的
Subject: =?UTF-8?B?" + subjectBase + "?=\r\n
這樣才能主題部分不亂碼 , =?UTF-8?B?這是郵件協議里固定的格式 , 例如下面的內容 , 中間部分是base64后的內容
=?UTF-8?B?5LiA5Y+35bqXNOWRqOW5tOW6hu+8jDEwMDDkuIfku7bng63plIA=?=
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/275324.html
標籤:其他
上一篇:Mybatis、Mybatis Generator、Mybatis-Plus、Mybatis Plus Generator
