内容简介:最近工作上有个需要发送邮件的需求,所以研究了下golang怎么发送邮件,这里记录下。附件中的中文是没有乱码的,email在解析附件的时候添加到了正文中,字符编码不是UTF-8所以显示有乱码。时间有限,今天就先到这里啦,有空再修改更新。
最近工作上有个需要发送邮件的需求,所以研究了下golang怎么发送邮件,这里记录下。
- 这里推荐一个第三方库
go get -v github.com/jordan-wright/email
之前也研究了官方库net/smtp
,以及其他第三方库如gomail
但是都不符合我的开发需求,使用的这个第三方库完美的解决了需求。 - 下面写个例子,演示一下
email
第三方库的使用,以及使用自定义模板发送邮件
首先在同级目录创建email-template.html
,main.go
两个文件。
// email-template.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <h4>亲爱的{{.ToUserName}},您好!</h4> <div>{{.Message}}</div> </br> <div> {{.FromUserName}} </br> {{.TimeDate}} </div> </body> </html>
// main.go package main import ( "bytes" "html/template" "log" "net/smtp" "time" "github.com/jordan-wright/email" ) func SendMail(fromUser, toUser, subject string) error { // NewEmail返回一个email结构体的指针 e := email.NewEmail() // 发件人 e.From = fromUser // 收件人(可以有多个) e.To = []string{toUser} // 邮件主题 e.Subject = subject // 解析html模板 t,err := template.ParseFiles("email-template.html") if err != nil { return err } // Buffer是一个实现了读写方法的可变大小的字节缓冲 body := new(bytes.Buffer) // Execute方法将解析好的模板应用到匿名结构体上,并将输出写入body中 t.Execute(body,struct { FromUserName string ToUserName string TimeDate string Message string }{ FromUserName: "go语言", ToUserName: "Sixah", TimeDate: time.Now().Format("2006/01/02"), Message: "golang是世界上最好的语言!", }) // html形式的消息 e.HTML = body.Bytes() // 从缓冲中将内容作为附件到邮件中 e.Attach(body, "email-template.html", "text/html") // 以路径将文件作为附件添加到邮件中 e.AttachFile("/home/shuai/go/src/email/main.go") // 发送邮件(如果使用QQ邮箱发送邮件的话,passwd不是邮箱密码而是授权码) return e.Send("smtp.qq.com:587", smtp.PlainAuth("", "xxx@qq.com", "passwd", "smtp.qq.com")) } func main() { fromUser := "golang<xxx@qq.com>" toUser := "xxx@qq.com" subject := "hello,world" err := SendMail(fromUser,toUser,subject) if err != nil { log.Println("发送邮件失败") return } log.Println("发送邮件成功") }
-
下面是发送效果
f316fa6fc6316ef2fb6b8b473f4a5def.png
附件中的中文是没有乱码的,email在解析附件的时候添加到了正文中,字符编码不是UTF-8所以显示有乱码。
时间有限,今天就先到这里啦,有空再修改更新。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- php – 使用TCPDF发送电子邮件附件
- java通过smtp服务 给指定邮箱发送邮件含附件
- 附件在线预览组件 WDA 1.2.3 发布,支持通过 url 预览附件
- 封装一个简易的上传附件方法
- java实现附件预览(openoffice+swftools+flexpaper)
- 邮件客户端 Thunderbird 60.0 正式发布,改进附件功能
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。