内容简介:大家好我是平也,今天跟大家介绍一款用来发送邮件的Go语言库email,目前星星1.3k,非常好用。初始化项目本示例项目结构
导读
大家好我是平也,今天跟大家介绍一款用来发送邮件的 Go 语言库email,目前星星1.3k,非常好用。
极速上手
准备工作
初始化项目
go get github.com/jordan-wright/email
本示例项目结构
. ├── go.mod ├── go.sum └── main.go
开启邮箱SMTP服务,以163邮箱为例,需要先登录到邮箱后台点击开启按钮,在发送完短信之后,会获取到一个授权码,将授权码保存,后面需要用到。
file
file
代码示例
首先配置好邮件内容
e := email.NewEmail() e.From = "平也<pingyeaa@163.com>" e.To = []string{"602588122@qq.com"} e.Subject = "发现惊天大秘密!" e.Text = []byte("平也好帅好有智慧哦~")
- From:发件人邮箱,格式为“名称+<邮箱>”,也可以直接写邮箱,默认显示的发件人为@符号前的名称
- To:收件人邮箱地址
- Subject:邮件标题
- Text:邮件正文
调用Send方法发送邮件,第一个参数是你的发件人邮箱的SMTP域名+端口号,第二个参数用于身份认证
e.Send("smtp.163.com:25", smtp.PlainAuth("", "pingyeaa@163.com", "<你的密码>", "smtp.163.com"))
smtp.PlainAuth
- 参数1:通常,identity应该是空字符串,以用作用户名。
- 参数2:用户名
- 参数3:密码,如果拿到了授权码,则填写授权码
- 参数4:服务器地址,163的地址是smtp.163.com,其他平台可自行查看
完整代码如下
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与BCC
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
https://github.com/pingyeaa/golang-examples感谢大家的观看,如果觉得文章对你有所帮助,欢迎关注公众号「平也」,聚焦Go语言与技术原理。
关注我
以上所述就是小编给大家介绍的《Go语言库系列之email》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别
- 计算机语言发展的三个阶段:机器语言、汇编语言与高级语言
- 凹 (“Wa”) 语言:可以嵌入 Go 语言环境的脚本语言
- Rust语言恰巧是一门解决了Go语言所有问题的语言
- 获取系统语言/当前 App支持语言
- 【Go 语言教程】Go 语言简介
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。