Отправка электронной почты на SMTP-сервер Gmail с использованием TLS и простой аутентификации - PullRequest
3 голосов
/ 27 июля 2011

У меня есть ситуация.Я хочу подключиться к SMTP-серверу Gmail и отправить письмо с моей учетной записи Gmail.В качестве SMTP-сервера Gmail использует PLAIN-аутентификацию и TLS.Я подключаюсь к серверу Gmail SMTP.и ответ сервера следующий:

220 mx.google.com ESMTP n21sm810716wed.43

, затем я отправляю сообщение «AUTH PLAIN» и отправляю команду «EHLO».Ответы сервера следующие:

503 5.5.1 EHLO/HELO first. n21sm810716wed.43

Затем я снова отправил ей команду «EHLO» и получил ответ:

250-mx.google.ком к вашим услугам, [203.99.179.10]

после этого, что бы я ни дал.Он печатает последовательность строк и выход.Последовательность ответов, которые он дает:

250-РАЗМЕР 35882577

250-8BITMIME

250-STARTTLS

250 ENHANCEDSTATUSCODES

что я должен дать ему, чтобы он позволил мне войти и отправить мне электронную почту?Любая помощь или предложение будут оценены.Спасибо

См. Также

Использование SMTP, Gmail и STARTTLS

Ответы [ 3 ]

3 голосов
/ 27 июля 2011

Вы столкнулись с 3 проблемами:

Во-первых, вы не читаете весь ответ команды EHLO.

Эта команда имеет многострочный response:

250-mx.google.com at your service, [203.99.179.10] 
250-SIZE 35882577 
250-8BITMIME 
250-STARTTLS 
250 ENHANCEDSTATUSCODES

Обратите внимание на пробел после последнего кода 250 - это означает, что это последняя строка ответа.

Second: EHLO должно быть первая отправленная вами команда.

В-третьих: Gmail не позволяет войти в систему без использования SSL, неявного (на порту 465) или явного (команда STARTTLS)

1 голос
/ 03 августа 2011

Мы не можем использовать STARTTLS, если у нас нет безопасного соединения с сервером. простая библиотека SMTP и telnet не поддерживают STARTTLS. Для этого мне пришлось использовать GNUTLS, который выполняет установление связи с сервером и обмен сертификатами для установления безопасного соединения. После этого я отправляю STARTTLS и все работает нормально. Надеюсь, что это помогает другим, сталкивающимся с подобной проблемой. Спасибо

0 голосов
/ 27 июля 2011

Вы должны выполнить команду STARTTLS после данного ответа.Вот пример диалога SMTP, полученный с netcat на smtp.gmail.com на порту 587:

220 mx.google.com ESMTP z83sm46627weq.20
EHLO localhost
250-mx.google.com at your service, [109.114.60.32]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES
STARTTLS
220 2.0.0 Ready to start TLS
...