内容简介:大家好我是平也,今天跟大家介绍一款用来发送邮件的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 语言简介
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Django 1.0 Template Development
Scott Newman / Packt / 2008 / 24.99
Django is a high-level Python web application framework designed to support the rapid development of dynamic websites, web applications, and web services. Getting the most out of its template system a......一起来看看 《Django 1.0 Template Development》 这本书的介绍吧!