Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

go-smtp, unable to send email through gmail, getting EOF

Tags:

go

gmail

I am using go-smtp to attempt to send an email to myself: https://github.com/emersion/go-smtp

    auth := sasl.NewPlainClient("", USERNAME, PASSWORD)
    to := []string{USERNAME}

    msg := strings.NewReader("To: " + USERNAME + "\r\n" +
        "Subject: testing golang go-smtp!\r\n" +
        "\r\n" +
        "This is the email body.\r\n")

    err := smtp.SendMail(SERVER_HOST + ":" + SERVER_PORT, auth, USERNAME, to, msg)
    if err != nil {
        log.Fatal(err)
    }

The output is: EOF exit status 1

I am connecting to smtp.gmail.com:465 and can send email through thunderbird okay.

Thanks for your help.

Walter

like image 328
Walter Avatar asked Nov 28 '25 18:11

Walter


1 Answers

Check out the "Configuration options" section here https://support.google.com/a/answer/176600?hl=en. It mentions that Gmail uses SSL for the SMTP server on port 465 and TLS for port 587. To resolve your issue, you could use port 587 because the smtp.SendMail() function internally makes a call to net.Dial() that uses plain TCP to send the mail traffic with a call to STARTTLS later in the process.

If you want to use port 465, here is a nice example that works for sending emails using SSL.

https://gist.github.com/chrisgillis/10888032

The main difference between the two methods as also mentioned in the above link is that in SSL, the TLS connection is established from the beginning whereas if you used port 587, the connection starts over plain TCP without encryption.

like image 89
user666N Avatar answered Dec 01 '25 18:12

user666N



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!