Получил первую запись, не похоже на рукопожатие 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
}

Этот код очень хорошо работает с YandexSMTP-сервер. Но когда я попытался проверить это с помощью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.

Другие вопросы по тегам