以前自己还在java阵营的时候就记录过如何使用java
来发送邮箱,现在记录一下使用go语言的gomail
包来发送邮箱,这里以qq邮箱为例。
大家应该了解了smtp
协议是什么,如果不明白的话,可以自行去了解一下。
首先我们要发邮件,肯定要有一个发件的账号。这里我用我自己的qq邮箱来作为发件账号,与此同时,由于qq邮箱默认是不开启smtp
协议的,所以我们需要去开启一下。开启的方法如下:
点击《设置》-《帐户》,然后往下滑,找到一堆设置之后,选择开启POP3/SMTP服务
。
我这里已经开启了,没开启的小伙伴可以根据提示去开启它。或者要使用其它协议也可,开启对应协议即可。
准备工作做完,接下来就是编码操作了。
我们使用的是这个包,引入它:
import "gopkg.in/gomail.v2"
这是使用go mod
比较方便,就不用go get去自己寻找依赖了。
包的github地址在这,有兴趣想要深入研究的小伙伴可以跳转这儿。
进入正题:
func main() {
message := gomail.NewMessage()
message.SetHeader("From", "[email protected]")
message.SetHeader("To", "[email protected]")
message.SetAddressHeader("Cc", "[email protected]", "抄送者")
message.SetHeader("Subject", "Hello World")
message.SetBody("text/html", "Hello 您好 and 我的gomail")
if err := gomail.NewDialer("smtp.qq.com", 25, "[email protected]", "刚刚开启smtp服务时,系统给你的密钥").DialAndSend(message); err != nil {
fmt.Println(err)
}
fmt.Println("-----------, success!")
}
方法大同小异,首先获取到一个message对象:
message := gomail.NewMessage()
然后对这个message对象设置各种头,比如发送人的账号密钥呀,抄送者的账号,接受者的账号等等。有点http那味。
邮件的主题可以通过SetBody
方法设置。
之后使用NewDialer
得到一个smtp的dialer,可以通过这个对象去连接smtp的服务器。
最后通过DialAndSend
方法进行发送即可。注意,在实际业务开发中,记得要进行错误处理哦。
简单记一下用法,并没有去深入源码,感兴趣的同学可以去github或是官方文档自行研究哦。感谢您的观看