经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » HTML » 查看文章
[Go]解决go-smtp发送内容乱码和发送html邮件不解析
来源:cnblogs  作者:陶士涵  时间:2021/4/12 19:14:57  对本文有异议

使用github.com/emersion/go-smtp , 通过smtp发送通知邮件内容

加上html代码的内容后 , 在一些邮箱里会被原样展示 , 并没有展示成html , 原因是没有加Content-Type , 加上之后就可以了

tools/smtp.go

  1. package tools
  2. import (
  3. "encoding/base64"
  4. "github.com/emersion/go-sasl"
  5. "github.com/emersion/go-smtp"
  6. "strings"
  7. )
  8. func SendSmtp(server string, from string, password string, to []string, subject string, body string) error {
  9. auth := sasl.NewPlainClient("", from, password)
  10. subjectBase := base64.StdEncoding.EncodeToString([]byte(subject))
  11. msg := strings.NewReader(
  12. "From: " + from + "\r\n" +
  13. "To: " + strings.Join(to, ",") + "\r\n" +
  14. "Subject: =?UTF-8?B?" + subjectBase + "?=\r\n" +
  15. "Content-Type: text/html; charset=UTF-8" +
  16. "\r\n\r\n" +
  17. body + "\r\n")
  18. err := smtp.SendMail(server, auth, from, to, msg)
  19. if err != nil {
  20. return err
  21. }
  22. return nil
  23. }

 

测试用例

tools/smtp_test.go

  1. package tools
  2. import "testing"
  3. func TestSendSmtp(t *testing.T) {
  4. body := "<a href=''>hello</a>"
  5. SendSmtp("smtp.sina.cn:25", "taoshihan1@sina.com", "xxxxx", []string{"taoshihan1@sina.com"}, "123456", body)
  6. }

当前代码位于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=?=

 

原文链接:http://www.cnblogs.com/taoshihan/p/14648949.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号