要在服务器的后台接口上,增加一个发送邮件的接口。每天调用的频率也不高。 最终选择了这个库
https://github.com/go-gomail/gomail
Star 4.5K,近十年没有更新了。。。但测试没有任何问题,而且也完全满足我的需求。
安装
> go get gopkg.in/gomail.v2
代码
package main
import (
gomail "gopkg.in/gomail.v2"
)
func main() {
msg := gomail.NewMessage()
msg.SetHeader("From", "test@163.com")
msg.SetHeader("To", "test@qq.com")
msg.SetHeader("Subject", "测试邮件")
msg.SetBody("text/html", "<b>This is the body of the mail</b>")
// msg.Attach("/home/User/cat.jpg")
// 需要去 163 邮箱的手机 app 或者网页端开启 POP3/SMTP服务,并创建一个授权码,
// 下面的 xxx 就是授权码
n := gomail.NewDialer("smtp.163.com", 465, "test@163.com", "xxx")
// Send the email
if err := n.DialAndSend(msg); err != nil {
panic(err)
}
}
测试成功。😊
docker alpine 容器的兼容性
即,这段代码是否可以在 alpine docker 容器中运行。
经测试可以,并不需要再单独安装证书,就能正常发送邮件。
deepseek 提示我可能出现的情况:
Alpine 镜像默认缺少根证书(CA Certificates)
看来是多虑了。
授权码的安全性
因为可以在 163 邮箱的手机客户端上随时废弃一个授权码。所以相对账号密码形式,这个更方便管理一些。
普通账号能设置两个授权码, VIP 可以设置 10 个。。。网易还真是会做生意 👍
授权码 180 天过期?
这是怎么个意思,难道半年就需要更新一次授权码?
gmail smtp 测试
fail to send email: 534 5.7.9 Please log in with your web browser and then try again. For more\n5.7.9 information, go to\n5.7.9 https://support.google.com/mail/?p=WebLoginRequired d9443c01a7336-220d545d448sm12526655ad.150 - gsmtp"
估计是 gmail 账号的问题。毕竟 163 的邮箱是正常的。
参考
- https://www.jianshu.com/p/e1c2fa06cc57
- https://github.com/go-gomail/gomail
- https://pkg.go.dev/gopkg.in/gomail.v2#section-readme 这个文档里的示例比较多
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式