Golang特辑---使用gomail发送邮箱

文章目录

  • 前言
  • 准备
  • 编码

前言

以前自己还在java阵营的时候就记录过如何使用java来发送邮箱,现在记录一下使用go语言的gomail包来发送邮箱,这里以qq邮箱为例。


准备

大家应该了解了smtp协议是什么,如果不明白的话,可以自行去了解一下。

首先我们要发邮件,肯定要有一个发件的账号。这里我用我自己的qq邮箱来作为发件账号,与此同时,由于qq邮箱默认是不开启smtp协议的,所以我们需要去开启一下。开启的方法如下:

Golang特辑---使用gomail发送邮箱_第1张图片

点击《设置》-《帐户》,然后往下滑,找到一堆设置之后,选择开启POP3/SMTP服务

Golang特辑---使用gomail发送邮箱_第2张图片
我这里已经开启了,没开启的小伙伴可以根据提示去开启它。或者要使用其它协议也可,开启对应协议即可。


编码

准备工作做完,接下来就是编码操作了。

我们使用的是这个包,引入它:

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或是官方文档自行研究哦。感谢您的观看

你可能感兴趣的:(Go,go,smtp)