2016-10-24 9 views
2

Я хочу прочитать электронную почту с моей учетной записи электронной почты Yahoo. Я использую «OpenPop.Pop3» читать электронную почту от моего Yahoo учетной записи электронной почты, я использую ниже код: -Как читать последнее письмо электронной почты с помощью 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, но при работе с Yahoo Mail электронные письма я могу получить предмет, дата, но когда пришел к части сообщения, что это:

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

Его дают ошибку «поток, используемый для получения ответов от был закрыт».

Вот «StackTrace»:

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() 

Пожалуйста, дайте мне знать, если я что-то отсутствует или делать что-то неправильно. Также у меня есть почтовые сообщения электронной почты yahoo, которые можно получить в любом месте, используя 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; 
} 
Смежные вопросы