📅  最后修改于: 2023-12-03 14:50:55.699000             🧑  作者: Mango
在 Golang 中发送电子邮件可以使用标准库中的 net/smtp
包,通过它可以很方便地利用 SMTP 协议将电子邮件发送到指定的邮箱地址。
在编写代码前,我们需要先获取邮箱提供商的 SMTP 服务器地址、端口号和登录信息,这些信息通常可以在邮件服务商的帮助文档中找到。
以 QQ 邮箱为例,我们可以先在账户设置中开启 SMTP 服务,并获取到 SMTP 服务器地址和端口号,例如:
smtp.qq.com
465
然后,我们需要设置登录信息,包括 SMTP 登录账号、SMTP 登录密码(或授权码)。这些信息也可以在邮件服务商的帮助文档中找到。
首先,我们需要引入 net/smtp
包:
import (
"net/smtp"
)
然后,我们需要构造一个 smtp.Auth
对象,用于登录 SMTP 服务器。在构造 Auth
对象时,我们需要传入 SMTP 登录账号和登录密码(或授权码),如下所示:
auth := smtp.PlainAuth("", "your_email@example.com", "your_password_or_auth_code", "smtp.qq.com")
注意,PlainAuth
函数的第 1 个参数为空字符串,表示采用普通方式登录 SMTP 服务器。
接着,构造电子邮件消息体,包括邮件主题、发件人、收件人、邮件内容等信息:
from := "your_email@example.com" // 发件人邮箱地址
to := []string{"recipient@example.com"} // 收件人邮箱地址,多个收件人用逗号分隔
subject := "Test Email" // 邮件主题
body := "This is a test email." // 邮件内容
// 构造 MIME 消息
message := []byte("To: " + strings.Join(to, ",") + "\r\n" +
"Subject: " + subject + "\r\n" +
"\r\n" +
body + "\r\n")
在构造 MIME 消息时,我们需要注意几点:
To
头字段中,多个收件人地址之间需要用逗号分隔。\r\n
换行符分隔,并且位于头部和正文之间会有一个空行。最后,利用 smtp.SendMail()
函数发送邮件:
err := smtp.SendMail("smtp.qq.com:465", auth, from, to, message)
if err != nil {
panic(err)
}
这里的 SendMail()
函数需要传入 SMTP 服务器的地址和端口号、Auth
对象、发件人邮箱地址、收件人邮箱地址列表、MIME 消息体等参数。
import (
"net/smtp"
"strings"
)
func main() {
auth := smtp.PlainAuth("", "your_email@example.com", "your_password_or_auth_code", "smtp.qq.com")
from := "your_email@example.com"
to := []string{"recipient@example.com"}
subject := "Test Email"
body := "This is a test email."
message := []byte("To: " + strings.Join(to, ",") + "\r\n" +
"Subject: " + subject + "\r\n" +
"\r\n" +
body + "\r\n")
err := smtp.SendMail("smtp.qq.com:465", auth, from, to, message)
if err != nil {
panic(err)
}
}
本文介绍了在 Golang 中使用标准库中的 net/smtp
包发送电子邮件的方法,包括准备工作、代码实现和注意事项等内容。利用这种方法,我们可以很方便地实现邮件发送功能,为我们的应用增加更多实用价值。