Go语言发送邮件
邮件协议
各种事物都有一个规范,也就是协议,比如我们在浏览器里面浏览网页,需要遵循各种网络协议,我们先来简单了解一下都有哪些协议
SMTP
SMTP
是 简单邮件传输协议,是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。它通常在 25、465、587 端口上运行。另外
SMTP
协议属于TCP/IP
协议簇POP3
邮局协议的第3个版本,是因特网电子邮件的第一个离线协议标准(邮件服务器下载邮件到本地计算机后,可以断开网络连接继续查看邮件内容)。下载后邮件会从服务器删除。
IMAP
是一种优于
POP
的新协议,与POP
不同的是,他是典型的在线协议。和POP
一样,IMAP
也能下载邮件、从服务器中删除邮件或询问是否有新邮件。IMAP
可让用户在服务器上创建并管理邮件文件夹或邮箱、删除邮件、查询某封信的一部分或全部内容。最终完成所有这些工作都不需要把邮件从服务器下载到用户的个人计算机上。
一些基础的配置
- QQ邮箱的设置:需要打开
POP3/SMTP
服务
温馨提示:在使用 QQ 邮箱发送邮件的时候,需要使用授权码,而不是 QQ 密码!
开始编码
发送第一个简单的邮件
首先从一个简单的代码开始
1 |
|
结果如下:
解释一下:
- 创建 SMTP 客户端:使用
smtp.NewClient
创建一个新的 SMTP 客户端。 - 认证:使用
client.Auth
方法进行认证。 - 设置发件人和收件人:使用
client.Mail
和client.Rcpt
方法设置发件人和收件人。 - 写入邮件内容:使用
client.Data
方法获取一个io.WriteCloser
,然后使用Write
方法将邮件内容写入。
在这些步骤中,client.Data
方法实际上已经开始了邮件的发送过程,而Write
方法则将邮件内容写入到 SMTP 服务器中。
怎么调整格式?
我们希望我们发的邮件不仅仅是几个文字,我们希望这些文字有一定的格式,例如:一级标题,二级标题,居中等等。
所以我们采用将正文调整成 html 的样式,这样渲染的时候就可以实现我们想要的格式。
1 |
|
运行结果:
解释一下:
cid
是什么?cid
是Content-ID
的缩写,用于标识 MIME 消息(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展 是一种互联网标准,最初设计用于扩展电子邮件的功能,使其支持不仅仅是纯文本内容,还可以包含多种格式的内容)中的资源。它是一个唯一的标识符,通常通过 HTML 中的
<img>
或其他标签引用。例如:表示邮件正文中的图片资源,其Content-ID
为image001
。为什么需要
cid
?邮件客户端默认会阻止外部图片(
<img src="https://...">
)的加载,除非用户明确允许。而使用cid
将图片嵌入到邮件中,可以避免外部图片的加载限制,确保图片能够直接显示。
怎么添加附件?
1 |
|
运行结果:
有没有其他方法
主播主播,你的方法确实强,但太吃操作了,有没有更加简单又强势的方法推荐一下?有的兄弟有的!这么强的方法当然是不止一个,一共有九位,都是当前版本T0.5的强势方法。掌握一到两个方法,当个小皇帝都没有问题……
gomail
包email
包