大家好我是平也,今天跟大家介绍一款用来发送邮件的Go语言库email,目前星星1.3k,非常好用。
初始化项目
go get github.com/jordan-wright/email复制代码
本示例项目结构
.
├── go.mod
├── go.sum
└── main.go复制代码
开启邮箱SMTP服务,以163邮箱为例,需要先登录到邮箱后台点击开启按钮,在发送完短信之后,会获取到一个授权码,将授权码保存,后面需要用到。
首先配置好邮件内容
e := email.NewEmail()
e.From = "平也<pingyeaa@163.com>"
e.To = []string{"602588122@qq.com"}
e.Subject = "发现惊天大秘密!"
e.Text = []byte("平也好帅好有智慧哦~")复制代码
调用Send方法发送邮件,第一个参数是你的发件人邮箱的SMTP域名+端口号,第二个参数用于身份认证
e.Send("smtp.163.com:25", smtp.PlainAuth("", "pingyeaa@163.com", "<你的密码>", "smtp.163.com"))复制代码
smtp.PlainAuth
完整代码如下
package main
import (
"net/smtp"
"github.com/jordan-wright/email"
)
func main() {
e := email.NewEmail()
//e.From = "pingyeaa@163.com"
e.From = "平也 <pingyeaa@163.com>"
e.To = []string{"xxxxxx@qq.com"}
e.Subject = "发现惊天大秘密!"
e.Text = []byte("平也好帅好有智慧哦~")
err := e.Send("smtp.163.com:25", smtp.PlainAuth("", "pingyeaa@163.com", "KQHQCZSXQWPDZYRF", "smtp.163.com"))
if err != nil {
panic(err)
}
}复制代码
CC全称是Carbon Copy,意为抄送,BCC全称Blind Carbon Copy,意为暗抄送,收件人看不到被暗抄送给了谁。
e := email.NewEmail()
e.Cc = []string{"xxxxxxx@qq.com"}
e.Bcc = []string{"xxxxxxx@qq.com"}复制代码
可以实例化的时候直接赋值
e := &email.Email{
From: "平也 <pingyeaa@163.com>",
To: []string{"xxxxxxx@qq.com"},
Subject: "发现惊天大秘密!",
Text: []byte("平也好帅好有智慧哦~"),
}复制代码
发送附件非常简单,直接传入文件名即可
e.AttachFile("attachment.txt")复制代码
也可以调用Attach自行实现附件发送,AttachFile其实就是对Attach的封装
func (e *Email) AttachFile(filename string) (a *Attachment, err error) {
f, err := os.Open(filename)
if err != nil {
return
}
defer f.Close()
ct := mime.TypeByExtension(filepath.Ext(filename))
basename := filepath.Base(filename)
return e.Attach(f, basename, ct)
}复制代码
由于频繁发送邮件会不断的与SMTP服务器建立连接,比较影响性能,所以email提供了连接池的功能
auth := smtp.PlainAuth("", "pingyeaa@163.com", "<你的密码>", "smtp.163.com")
p, _ := email.NewPool("smtp.163.com:25", 4, auth)复制代码
创建成功后,就可以借助连接池来发送邮件
e := email.NewEmail()
e.From = "平也 <pingyeaa@163.com>"
e.To = []string{"xxxxxx@qq.com"}
e.Subject = "发现惊天大秘密!"
e.Text = []byte("平也好帅好有智慧哦~")
p.Send(e, 10*time.Second)复制代码
Go语言库代码示例,欢迎star github.com/pingyeaa/go…
感谢大家的观看,如果觉得文章对你有所帮助,欢迎关注公众号「平也」,聚焦Go语言与技术原理。
作者:平也 链接:https://juejin.im/post/5e8aa1d6f265da47bf17b250 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。