2014-07-03 238 views
1

我正嘗試使用SMTP在我的應用中發送電子郵件,而不使用iOS默認郵件系統。 但是,我收到一個SSL握手失敗的信息。 這是否意味着我試圖使用禁止我的請求的SMTP服務器?任何建議將被認真考慮。iOS SSL握手失敗

2014-07-03 18:04:20.266 MGM[267:4503] C: Attempting to connect to server at: smtp.apps1010.com:25 
2014-07-03 18:04:20.360 MGM[267:60b] *** stopping watchdog *** 
2014-07-03 18:04:20.361 MGM[267:60b] S: 220 pan.communilink.net ESMTP 
2014-07-03 18:04:20.361 MGM[267:60b] C: EHLO localhost 

2014-07-03 18:04:20.362 MGM[267:60b] *** starting short watchdog *** 
2014-07-03 18:04:20.370 MGM[267:60b] *** stopping watchdog *** 
2014-07-03 18:04:20.370 MGM[267:60b] S: 250-pan.communilink.net 
2014-07-03 18:04:20.377 MGM[267:60b] *** stopping watchdog *** 
2014-07-03 18:04:20.377 MGM[267:60b] S: 250-STARTTLS 
2014-07-03 18:04:20.378 MGM[267:60b] C: STARTTLS 

2014-07-03 18:04:20.378 MGM[267:60b] *** starting short watchdog *** 
2014-07-03 18:04:20.379 MGM[267:60b] *** stopping watchdog *** 
2014-07-03 18:04:20.379 MGM[267:60b] S: 250-PIPELINING 
2014-07-03 18:04:20.380 MGM[267:60b] *** stopping watchdog *** 
2014-07-03 18:04:20.381 MGM[267:60b] S: 250-8BITMIME 
2014-07-03 18:04:20.381 MGM[267:60b] *** stopping watchdog *** 
2014-07-03 18:04:20.381 MGM[267:60b] S: 250-SIZE 68000000 
2014-07-03 18:04:20.382 MGM[267:60b] *** stopping watchdog *** 
2014-07-03 18:04:20.382 MGM[267:60b] S: 250 AUTH LOGIN PLAIN CRAM-MD5 
2014-07-03 18:04:20.386 MGM[267:60b] *** stopping watchdog *** 
2014-07-03 18:04:20.386 MGM[267:60b] S: 220 Proceed. 
2014-07-03 18:04:20.387 MGM[267:60b] Beginning TLSv1... 
2014-07-03 18:04:20.388 MGM[267:60b] C: EHLO localhost 

2014-07-03 18:04:21.026 MGM[267:60b] CFNetwork SSLHandshake failed (-9807) 
+0

'telnet smtp.apps1010.com 25'掛在我身上。它看起來並不像那裏有一個SMTP服務器。 – jww

回答

1

發送之前STARTTLS你必須確保,你已經從服務器讀取最新命令的完整響應 - 在這種情況下,這將是EHLO與250 AUTH..結束。發送STARTTLS命令後,需要等待服務器的響應(220 Proceed),並且只有在獲得成功響應後,才應該從TLS握手開始。只有握手完成後,您才應該繼續在加密連接內發送命令。

+0

我相信服務器會用包含「STARTTLS」的廣告回答「HELO」。如果在那裏,客戶端可以使用TLS。如果服務器通告TLS,客戶端可以使用TLS,並且服務器不需要它。請參見[RFC 3207,SMTP傳輸層安全SMTP服務擴展](http://www.ietf.org/rfc/rfc3207.txt)中第5部分的使用示例。 – jww

+0

如果服務器在對EHLO的響應中宣佈支持它,那麼您可以使用STARTTLS,但是您仍然必須等到收到完整的響應後才發送您的命令,更重要的是,您必須等到獲得響應STARTTLS以SSL握手開始並且僅在握手完成後發送更多命令。這需要在連接的兩個站點上進行乾淨的SSL轉換。 –