尝试连接到 mailtrap smtp 时获得的第一条记录看起来不像 TLS 握手
got first record does not look like a TLS handshake when trying to connect to mailtrap smtp
我有以下用于创建 SMTP 连接的代码:
func NewSMTPClient(host, username, password string, port int) (*smtp.Client, error) {
tlsConfig := &tls.Config{ServerName: host}
conn, err := tls.Dial("tcp", fmt.Sprintf("%s:%d", host, port), tlsConfig)
if err != nil {
return nil, fmt.Errorf("smtp client: tcp dial: %s", err.Error())
}
c, err := smtp.NewClient(conn, host)
if err != nil {
return nil, fmt.Errorf("smtp client: new client: %s", err.Error())
}
auth := smtp.PlainAuth("", username, password, host)
if err = c.Auth(auth); err != nil {
return nil, fmt.Errorf("smtp client: get auth: %s", err.Error())
}
return &c, nil
}
此代码在 Yandex
SMTP 服务器上运行良好。但是当我尝试在单元测试中使用 MailTrap
对其进行测试时(因为我不想每次测试代码时都实际向人们发送电子邮件),我得到了这个错误:
smtp client: tcp dial: tls: first record does not look like a TLS handshake
编辑 1:
我尝试将InsecureSkipVerify
设置为true
,但还是出现同样的错误;虽然 MailTrap
配置说我应该可以使用 TLS
:
TLS: Optional (STARTTLS on all ports)
您尝试连接的 SMTP 服务器可能不支持 STARTTLS。
我有以下用于创建 SMTP 连接的代码:
func NewSMTPClient(host, username, password string, port int) (*smtp.Client, error) {
tlsConfig := &tls.Config{ServerName: host}
conn, err := tls.Dial("tcp", fmt.Sprintf("%s:%d", host, port), tlsConfig)
if err != nil {
return nil, fmt.Errorf("smtp client: tcp dial: %s", err.Error())
}
c, err := smtp.NewClient(conn, host)
if err != nil {
return nil, fmt.Errorf("smtp client: new client: %s", err.Error())
}
auth := smtp.PlainAuth("", username, password, host)
if err = c.Auth(auth); err != nil {
return nil, fmt.Errorf("smtp client: get auth: %s", err.Error())
}
return &c, nil
}
此代码在 Yandex
SMTP 服务器上运行良好。但是当我尝试在单元测试中使用 MailTrap
对其进行测试时(因为我不想每次测试代码时都实际向人们发送电子邮件),我得到了这个错误:
smtp client: tcp dial: tls: first record does not look like a TLS handshake
编辑 1:
我尝试将InsecureSkipVerify
设置为true
,但还是出现同样的错误;虽然 MailTrap
配置说我应该可以使用 TLS
:
TLS: Optional (STARTTLS on all ports)
您尝试连接的 SMTP 服务器可能不支持 STARTTLS。