2016-10-24 249 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; 
} 
相关问题