Подключение к smtp.gmail.com через командную строку

Сейчас я пишу приложение, отправляющее почту через действительный идентификатор пользователя и пароль GMail.

Я просто хотел смоделировать SMTP-соединение в моей командной строке Windows XP, а когда я telnet smtp.gmail.com на порте 465 - я ничего не вижу. Пустое командное окно с заголовком Telnet smtp.gmail.com открывается курсором. Когда я набираю команды EHLO или обычные команды рукопожатия SMTP, запрос просто закрывается.

Я не могу понять, что происходит не так и где. Я попытался подключиться к 587, он вообще не подключается в telnet. Может ли кто-нибудь прояснить, выполняю ли я что-то неправильно?

Ответ 1

Используя Linux или OSx, сделайте то, что рекомендовал Сорин, но вместо этого используйте порт 465. 25 - общий SMTP-порт, но не тот, который использует GMail. Кроме того, я не считаю, что вы хотите использовать -starttls smtp

openssl s_client -connect smtp.gmail.com:465

Вы должны получить много информации о сеансе SSL и ответе:

220 mx.google.com ...

Введите HELO, и вы получите:

250 mx.google.com at your service

Оттуда это не так просто, как просто отправка SMTP-сообщений, потому что у Gmail есть защита, чтобы гарантировать, что вы отправляете только сообщения электронной почты, принадлежащие вам, из ваших учетных записей. Вместо ввода "Helo" используйте "Ehlo". Я мало знаю о SMTP, поэтому я не могу объяснить разницу и не успеваю много исследовать. Возможно, кто-то с большим количеством знаний может объяснить.

Затем введите "auth login", и вы получите следующее:

334 VXNlcm5hbWU6

Это, по сути, слово "Username", закодированное в Base 64. Используя кодировщик Base 64, такой как этот, закодируйте свое имя пользователя и введите его. Сделайте то же самое для своего пароля, который будет указан далее. Вы должны увидеть:

235 2.7.0 Accepted

И что он, вы вошли в систему.

Есть еще одна странность, которую можно преодолеть, если вы используете терминалы OSx или Linux. Просто нажатие клавиши "ENTER", по-видимому, не приводит к тому, что CRLF должен завершить SMTP-сообщение. Вы должны использовать "CTRL + V + ENTER". Итак, это должно выглядеть следующим образом:

^M
.^M
250 2.0.0 OK

Ответ 2

Для терминала OSX:

openssl s_client -connect smtp.gmail.com:25 -starttls smtp 

Ответ 3

Попробуйте следующее:

telnet smtp.gmail.com 587

Ответ 4

Gmail требует, чтобы SMTP-связь со своим сервером была зашифрована. Хотя вы открываете соединение с сервером Gmail на порту 465, к сожалению, вы не сможете общаться с ним в открытом виде, поскольку Gmail требует, чтобы вы использовали STARTTLS/SSL-шифрование для подключения.

Ответ 6

Отметьте этот пост в lifehacker: Geek to Live: резервное копирование Gmail с fetchmail. Он использует программу командной строки. Проверьте и проверьте, помогает ли это. Кстати, почему вы используете командную строку, когда есть много других приятных альтернатив?

Ответ 7

Первоначально

tcp/465 предназначался для установления уровня SSL (и более нового TLS), а внутри выполнялся cleartext или простые старые протоколы (здесь smtp)

tcp/587 был первоначально заменен на порт по умолчанию tcp/25, когда спамеры и массовые рассылки были начаты, как десять или более лет назад, но также и во время этих печально известных возрастов AOL, когда у какого-то смешного интернет-провайдера были некоторые блоки по умолчанию исходящие (например, tcp/25) за отказ своих собственных клиентов (AOL) массово отправлять электронную почту/спам, но клиенты AOL, нуждающиеся в использовании альтернативных почтовых учетных записей и почтовых провайдеров, все еще нуждаются в отправке своих писем от AOL -internet, поэтому они все равно могут подключаться к tcp/587 и делать с ним простой smtp.

С помощью STARTTLS можно использовать два известных портала TCP/25 и tcp/587 с открытым текстом, и только тогда, когда начальное соединение с прозрачным текстом завершилось, затем START на уровне TLS ( таким образом STARTTLS) оттуда, имея защищенное соединение от этой точки вперед.

Что касается отладки таких вещей, возможно, с помощью инструментов командной строки, например, для окон есть почтовая программа командной строки с командной строкой (smtp), которая до сегодняшнего дня не может выполнять TLS (STARTTLS), поэтому она может использовать только простые, текст smtp для отправки своих писем.

http://www.blat.net/

Тогда есть множество бесплатных бесплатных программ и программного обеспечения с открытым исходным кодом, которые имеют больше возможностей и функций, таких как

smtp client: mailsend @googlecode http://code.google.com/p/mailsend/

smtp client: msmtp @sourceforge (связанный с mpop ниже) http://msmtp.sourceforge.net/

pop3 клиент: mpop @sourceforge http://mpop.sourceforge.net/

Ответ 8

gmail использует зашифрованное соединение. Таким образом, даже после установления соединения вы не сможете отправлять какие-либо письма. Шифрование немного сложно для управления. Вместо этого попробуйте использовать openssl.

Нить ниже должна помочь -

Как отправить электронную почту с помощью простых команд SMTP через Gmail?