SendMail
拨号 smtp 服务器使用非 tls tcp 连接,可能您的 smtp 服务器默认使用 ssl tcp 连接,不支持STARTTLS
扩展。客户端发送STARTTLS
command,服务器不会回复,所以现在是阻塞的。
func SendMail(addr string, a Auth, from string, to []string, msg []byte) error {
......
if ok, _ := c.Extension("STARTTLS"); ok {
config := &tls.Config{ServerName: c.serverName}
if testHookStartTLS != nil {
testHookStartTLS(config)
}
if err = c.StartTLS(config); err != nil {
return err
}
}
......
}
现在您可以使用 tls 访问 smtp 服务器,这不会阻塞,详情请参阅
示例代码,或使用非 tls 端口。
// SendMailTLS connects to the server at addr, default use TLS
func SendMailTLS(addr string, auth smtp.Auth, from string, to []string, msg []byte) error {
......
tlsconfig := &tls.Config{ServerName: host}
if err = validateLine(from); err != nil {
return err
}
......
conn, err := tls.Dial("tcp", addr, tlsconfig)
if err != nil {
return err
}
defer conn.Close()
c, err := smtp.NewClient(conn, host)
......