Получил первую запись, не похоже на рукопожатие TLS при попытке подключиться к почтовой ловушке 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)
1 ответ
Решение
Вероятно, SMTP-сервер, к которому вы пытаетесь подключиться, не поддерживает STARTTLS.