阿里云服务器邮件发送失败(dail tcp xxxx:25: i/o timeout)因为阿里云默认禁用 25 端口
最近在测试发送邮件的功能,发现了一个奇怪的问题,同样的 docker 镜像,在本地跑起来是可以正常发送邮件的,但是在阿里云的服务器上跑,就会报错 i/o timeout
。
排查了一圈发现,原来是阿里云的操作,阿里云默认禁用 25 端口以防止垃圾邮件的传播,需使用 465
或 587
端口来进行 SMTP
连接。
go 示例代码
package mainimport ("crypto/tls""fmt""gopkg.in/gomail.v2"
)func main() {err := sendMail("user@example.com", "我是测试邮件", "送你一朵小红花")fmt.Println(err)
}func sendMail(to, subject, body string) error {m := gomail.NewMessage()m.SetHeader("From", "sender@example.com")m.SetHeader("To", to)m.SetHeader("Subject", subject)m.SetBody("text/html", body)// 这里端口换成 465d := gomail.NewDialer("smtp.example.com", 25, "user", "123456")// d.TLSConfig = &tls.Config{InsecureSkipVerify: true}return d.DialAndSend(m)
}
感兴趣的可以看我写的另一篇有关电子邮件的文章 电子邮件发送接收原理(附 go 语言实现发送邮件)