2009-10-04 162 views
34

我正在編寫通過有效的GMail用戶標識和密碼發送郵件的應用程序。通過命令行連接到smtp.gmail.com

我只是想模擬我的Windows XP命令行上的SMTP連接,以及當我在465端口telnet smtp.gmail.com - 我沒有看到任何東西。用光標打開標題爲Telnet smtp.gmail.com的空白命令窗口。當我輸入EHLO或通常的SMTP握手命令時,提示會關閉。

我無法弄清楚什麼是錯誤的,哪裏。我試圖連接到587,它根本不連接在telnet上。任何人都可以澄清,如果我做錯了什麼?

+0

參見:http://stackoverflow.com/a/36296872/59087 – 2016-04-07 20:21:13

回答

4

Gmail需要與其服務器的SMTP通信進行加密。儘管您在端口465上打開了與Gmail服務器的連接,但不幸的是,您無法以明文形式與Gmail進行通信,因爲Gmail要求您使用STARTTLS/SSL加密進行連接。

+1

所以有沒有辦法,我可以從命令行辦呢? – Abhishek 2009-10-04 16:18:04

2

查看lifehacker的帖子:Geek to Live: Back up Gmail with fetchmail。它使用命令行程序。檢查並看看是否有幫助。順便說一句,爲什麼你有很多其他不錯的選擇時使用命令行?

+1

嘿Shoban,我只是想找到或寫一個動作腳本,發送郵件在我的flex應用程序中使用它 – Abhishek 2009-10-05 04:07:15

5

試試這個:

telnet smtp.gmail.com 587 
+7

然後呢?你是做什麼? – trusktr 2013-04-26 07:23:28

+9

在問題中提到587端口無法正常工作,並且他已經嘗試了您在此處提供的內容。你在這個線程中沒有任何價值。 – 2015-04-27 15:04:32

+1

Downvoted因爲沒有幫助而且沒​​有解釋之後要做什麼。 – Archibald 2016-04-05 15:44:02

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會話和響應:在HELO

220 mx.google.com ... 

類型,你會收到:

250 mx.google.com at your service 

從那裏,它並不像剛剛發送SMTP郵件因爲Gmail有保護措施,以確保你只發送郵件看起來像是來自帳戶實際上貝隆一樣簡單g給你。不要輸入「Helo」,請使用「Ehlo」。我對SMTP不太瞭解,所以我無法解釋它們之間的差異,也沒有時間去研究太多。也許有更多知識的人可以解釋。

然後,鍵入「身份驗證登錄」,您將獲得以下信息:

334 VXNlcm5hbWU6 

這主要是使用基64的編碼器,如this one在基地64編碼單詞「用戶名」,編碼您的用戶名稱並輸入。請爲您的密碼做同樣的事情,請在下面提出要求。您應該看到:

235 2.7.0 Accepted 

就是這樣,您已登錄。

如果您使用OSx或Linux終端,還有一點需要克服。只需按下「ENTER」鍵,顯然不會導致SMTP需要結束消息的CRLF。你必須使用「CTRL + V + ENTER」。所以,這看起來應該像下面這樣:

^M 
.^M 
250 2.0.0 OK 
+3

至少對於osx,您可以將「-crlf」添加到最初的「openssl」連接,以使其與RETURNS很好地配合使用。例如openssl s_client -connect smtp.gmail。com:465 -crlf – 2013-06-25 15:47:14

+2

自你發佈這個版本差不多兩年了,但這確實是一個很好的答案。謝謝! – Greg0ry 2014-10-22 13:14:22

+1

仍然像一個魅力。如果只有愚蠢的Gmail沒有要求我從我的服務器使用我的Web瀏覽器登錄,而我的服務器只有一個控制檯; /。 – Reinmar 2015-03-01 12:19:00

2

TCP/465最初的目的是用於建立SSL(和較新的TLS)層中的第一,和裏面做明文或純老協議(SMTP這裏)

tcp/587最初是在垃圾郵件發送者和羣發郵件攻擊像十年前或更早的時候開始時,替代默認的tcp/25端口,而且在那些臭名昭着的AOL時代,當一些有趣的ISP在默認端口出站時有一些阻塞因爲那時tcp/25)否認自己的客戶(AOL)大量發送電子郵件/垃圾郵件,但美國在線 - 需要使用其他郵件帳戶和郵件提供商的客戶仍然需要從AOL-internet連接器發送郵件所以他們仍然可以連接到tcp/587,然後在它上面做簡單的smtp。

與使用smtp的STARTTLS方式的處理方式是使用兩個衆所周知的純文本tcp/25和tcp/587端口,並且只有當初始明文連接成功後才能啓動TLS層(從而STARTTLS)從那裏開始,從那個點起具有安全連接。

至於調試這些東西可能通過命令行工具,例如Windows有歷史的命令行郵件程序(smtp),直到今天不能做TLS(STARTTLS),所以它只能使用普通文本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/