2015-09-27 38 views
0

我正在使用以下代碼檢索電子郵件。但是當我嘗試連接服務器時,我得到一個Socket異常(client.Connect(uri,cancel.Token);)。使用MailKit從Gmail中檢索電子郵件

未處理的異常: System.Net.Sockets.SocketException:連接超時

using MailKit; 
using MimeKit; 
using System.Net; 
using System.Threading; 
using MailKit.Net.Pop3; 

namespace TestMail 
{ 
class Program 
{ 
    public static void Main (string[] args) 
    { 

      using (var client = new Pop3Client()) { 

      var Server = "gmail.com"; 
      var Port = "995"; 
      var UseSsl = false; 
      var credentials = new NetworkCredential("[email protected]", "abc"); 
      var cancel = new CancellationTokenSource(); 
      var uri = new Uri(string.Format("pop{0}://{1}:{2}", (UseSsl ? "s" : ""), Server, Port)); 

      //Connect to email server 
      client.Connect(uri, cancel.Token); 
      client.AuthenticationMechanisms.Remove ("XOAUTH2"); 
      client.Authenticate (credentials, cancel.Token); 

      //Fetch Emails 
      for (int i = 0; i < client.Count; i++) { 
       var message = client.GetMessage (i); 
       Console.WriteLine ("Subject: {0}", message.Subject); 
      } 

      //Disconnect Connection 
      client.Disconnect(true); 
     } 
    } 

} 

} 

回答

0

我敢肯定,你需要使用pop.gmail.com而不僅僅是gmail.com作爲服務器字符串。

+0

完成更改後,我在同一個地方得到了不同的異常 - 未處理的異常: MailKit.Net.Pop3.Pop3ProtocolException:POP3服務器意外斷開連接。 – user1925406

+0

當我將useSsl設置爲true時,它正在連接,但引發了身份驗證異常----未處理的異常: MailKit.Net.Pop3.Pop3ProtocolException:POP3服務器未響應AUTH命令的+ OK響應。當我登錄到我的Gmail賬戶時,它已經登錄了。這是否意味着gmail阻止了我的身份驗證,並且有什麼方法可以解除它的阻止嗎? – user1925406

+0

是的,這意味着Google會阻止它。您需要進入GMail設置並啓用POP3支持。您可能還需要啓用對「安全性較低的應用程序」的支持(或者作爲Google開發者註冊並獲得OAuth2令牌並開始使用OAuth2身份驗證)。 – jstedfast