Отправка электронной почты в учетной записи gmail с использованием SMTP

#go

#Вперед

Вопрос:

Я хочу отправить тестовое электронное письмо в свою учетную запись Gmail

Таким образом, я попробовал этот фрагмент из https://golang.org/src/net/smtp/example_test.go

 func ExampleSendMail() {
    // Set up authentication information.
    auth := smtp.PlainAuth("", "user@example.com", "password", "mail.example.com")

    // Connect to the server, authenticate, set the sender and recipient,
    // and send the email all in one step.
    to := []string{"recipient@example.net"}
    msg := []byte("To: recipient@example.netrn"  
        "Subject: discount Gophers!rn"  
        "rn"  
        "This is the email body.rn")
    err := smtp.SendMail("mail.example.com:25", auth, "sender@example.org", to, msg)
    if err != nil {
        log.Fatal(err)
    }
}

 

Однако. Я получаю сообщение об ошибке.

 dial tcp 74.125.23.109:25: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
 

Помогите мне понять, в чем основная причина этой проблемы.

Комментарии:

1. В сообщении об ошибке указывается основная причина проблемы. Запущен ли и работает ли smtp-сервер? Вы подтвердили, что можете подключиться к нему с помощью пароля auth?

Ответ №1:

Я собираюсь предположить, что в вашем реальном коде вы используете реальный серверный домен и порт вместо mail.example.com .

Из сообщения об ошибке ясно, что SMTP-сервер, к которому вы пытались подключиться, не ответил, и время ожидания вашего запроса истекло. Вы должны убедиться, что вы связываетесь с действительным SMTP-сервером через правильный порт (часть mail.example.com: 25 в вызове SendMail).

Один из простых способов проверки — перейти к вашему терминалу и запустить:

 telnet server.anexampledomain.net 25   # replace with domain and port in question
 

Посмотрите, получите ли вы ответ, подобный:

 Trying 74.125.23.109...
Connected to 74.125.23.109.
Escape character is '^]'.
220 smtp.gmail.com ESMTP x3sm2050129pfp.98 - gsmtp
 

Это говорит вам, что сервер доступен и открыт для SMTP-соединений.

Если вы указали правильный домен и порт сервера, и вы не можете связаться с сервером с помощью вышеуказанного, тогда проблема в вашей сети, а не в написанном вами коде.