簡體   English   中英

如何使用Pop3 C#從Yahoo郵件中讀取最新電子郵件

[英]How to read latest email from Yahoo mail using pop3 c#

我想從我的Yahoo郵件帳戶中讀取電子郵件。 我正在使用“ OpenPop.Pop3”從我的Yahoo郵件帳戶中讀取電子郵件,我正在使用以下代碼:-

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電子郵件時,我可以獲取主題,日期,但是當涉及到郵件部分時,它是:

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在任何地方進行訪問。

首先,根據您的代碼段,您將每個消息下載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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM