Saya memiliki kode berikut untuk membuat koneksi 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
}

Kode ini bekerja sangat baik dengan Yandex server SMTP. Tetapi ketika saya mencoba mengujinya dengan MailTrap dalam pengujian unit saya (karena saya tidak ingin benar-benar mengirim email ke orang setiap kali saya menguji kode), saya mendapatkan kesalahan ini:

smtp client: tcp dial: tls: first record does not look like a TLS handshake

EDIT 1:

Saya telah mencoba menyetel InsecureSkipVerify ke true, tetapi masih mendapatkan kesalahan yang sama; meskipun konfigurasi MailTrap mengatakan bahwa saya harus dapat menggunakan TLS:

TLS: Optional (STARTTLS on all ports)
1
Zeinab Abbasimazar 2 Juli 2020, 01:55

1 menjawab

Jawaban Terbaik

Mungkin server SMTP yang Anda coba sambungkan tidak mendukung STARTTLS.

1
Ady 2 Juli 2020, 14:28