2016-10-24 98 views
2

我想從我的雅虎郵箱帳戶讀取電子郵件。我使用「OpenPop.Pop3」,開始讀雅虎電子郵件帳戶的電子郵件,我使用下面的代碼: -如何使用pop3讀取雅虎郵件的最新電子郵件c#

using OpenPop.Pop3;  

public DataTable ReadEmailsFromId() 
{ 
    DataTable table = new DataTable(); 
    try 
    { 
     using (Pop3Client client = new Pop3Client()) 
     { 
      client.Connect("pop.mail.yahoo.com", 995, true); //For SSL     
      client.Authenticate("Username", "Password", AuthenticationMethod.UsernameAndPassword); 

      int messageCount = client.GetMessageCount(); 
      for (int i = messageCount; i > 0; i--) 
      { 
       table.Rows.Add(client.GetMessage(i).Headers.Subject, client.GetMessage(i).Headers.DateSent); 
       string msdId = client.GetMessage(i).Headers.MessageId; 
       OpenPop.Mime.Message msg = client.GetMessage(i); 
       OpenPop.Mime.MessagePart plainTextPart = msg.FindFirstPlainTextVersion(); 
       string message = plainTextPart.GetBodyAsText();       
      } 
     } 
    } 
return table; 
} 

相同的代碼能夠訪問其他郵件的電子郵件,如Gmail,Outlook,但與雅虎郵件工作時電子郵件我能夠獲得主題,日期,但是當來到消息部分是:

OpenPop.Mime.Message msg = client.GetMessage(i); 
OpenPop.Mime.MessagePart plainTextPart = msg.FindFirstPlainTextVersion(); 

它給錯誤「使用從被關閉檢索的響應流」。

這裏是「堆棧跟蹤」:

at OpenPop.Pop3.Pop3Client.IsOkResponse(String response) 
at OpenPop.Pop3.Pop3Client.SendCommand(String command) 
at OpenPop.Pop3.Pop3Client.Disconnect() 
at OpenPop.Pop3.Pop3Client.Dispose(Boolean disposing) 
at OpenPop.Pop3.Disposable.Dispose() 

請讓我知道如果我失去了一些東西或者做錯了什麼。 此外,我已經使雅虎郵件電子郵件訪問任何地方使用POP。

回答

0

首先,根據您的代碼片段,您將每次下載4條消息。這將會非常緩慢。

至於爲什麼你得到的錯誤,我不知道。我沒有得到一個錯誤使用MailKit

using MimeKit; 
using MailKit; 
using MailKit.Net.Pop3;  

public DataTable ReadEmailsFromId() 
{ 
    DataTable table = new DataTable(); 
    try 
    { 
     using (Pop3Client client = new Pop3Client()) 
     { 
      client.Connect("pop.mail.yahoo.com", 995, true); //For SSL     
      client.Authenticate("Username", "Password"); 

      for (int i = client.Count - 1; i >= 0; i--) 
      { 
       var msg = client.GetMessage (i); 

       table.Rows.Add(msg.Subject, msg.Date); 
       string msdId = msg.MessageId; 
       string message = msg.TextBody; 
      } 
     } 
    } 
return table; 
} 
相關問題