分享
  1. 首页
  2. 文章

golang发送邮件以及附件

Sixah · · 5247 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

最近工作上有个需要发送邮件的需求,所以研究了下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所以显示有乱码。
时间有限,今天就先到这里啦,有空再修改更新。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Sixah

查看原文:golang发送邮件以及附件

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
5247 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏