2009-10-04 2 views
34

Я нахожусь в процессе написания приложения, которое отправляет почту через действительный идентификатор пользователя и пароль GMail.Подключение к smtp.gmail.com через командную строку

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

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

+0

Смотрите также: http://stackoverflow.com/a/36296872/59087 –

ответ

4

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

+1

поэтому не существует никакого способа, я могу сделать это из командной строки? – Abhishek

2

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

+1

Эй, Шобан, я просто пытаюсь найти или написать сценарий действий, который отправляет почту, чтобы использовать его в моем приложении flex – Abhishek

5

Попробуйте это:

telnet smtp.gmail.com 587 
+7

Тогда что? Чем ты занимаешься? – trusktr

+9

В вопросе о том, что порт 587 не работает и что он уже пробовал то, что вы здесь предоставляете, говорится в нем. Вы не приносите ничего полезного в этот поток. –

+1

Вниз, потому что бесполезно и не объясняет, что делать потом. – Archibald

7

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

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

Использование 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 имеет защиту в месте, чтобы убедиться, что вы только отправлять электронные письма появляются быть со счетов, что на самом деле Белон g вам. Вместо ввода «Helo» используйте «Ehlo». Я мало знаю о SMTP, поэтому я не могу объяснить разницу и не успеваю много исследовать. Возможно, кто-то с большим количеством знаний может объяснить.

Затем введите «Auth Войти», и вы получите следующее:

334 VXNlcm5hbWU6 

Это, по существу, слово «Имя», закодированное в Базе 64. Использование базового 64 кодера, такие как this one, кодировать пользователь имя и введите его. Сделайте то же самое для своего пароля, который будет указан далее. Вы должны увидеть:

235 2.7.0 Accepted 

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

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

^M 
.^M 
250 2.0.0 OK 
+3

Для osx, по крайней мере, вы можете добавить «-crlf» к первоначальному соединению «openssl», чтобы он хорошо работал с RETURNS. например openssl s_client -connect smtp.gmail.com: 465 -crlf –

+2

Это почти два года с тех пор, как вы разместили это, но на самом деле это отличный ответ. Благодаря! – Greg0ry

+1

Все еще работает как шарм. Если бы только глупый Gmail не просил меня войти в систему, используя мои веб-браузеры с моего сервера, где у меня только консоль; – Reinmar

2

ТСР/465 был первоначально предназначен для создания SSL (и новее TLS) первый слой, а внутри делать открытым текстом или простые старые протоколы (SMTP здесь)

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

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

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

http://www.blat.net/

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

SMTP-клиент: mailsend @ GoogleCode http://code.google.com/p/mailsend/

SMTP-клиент: msmtp @ SourceForge (относится к mpop ниже) http://msmtp.sourceforge.net/

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

0

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

Нить ниже должна Помощь-

How to send email using simple SMTP commands via Gmail?

Смежные вопросы