2011-07-28 7 views
1

私はWebドメインからC#で電子メールを読んでおり、OpenPop.netライブラリを使っています。pop3のメールを読んで、なぜメールを読まないのですか?

メールを読んでいますが、新着メールのみが届きます。私はホットメールのようにして読んで、読んだり読んだりするとCSSを使用して、別の方法で表示させたいと思っています。どうすればいいのか教えてください。あなたは何ができるか

おかげ

答えて

0

を使用すると、SMTPサーバからそれらを取得するとき、あなたのアプリケーションを次回開いたときには、あなたはまだ、すべての電子メールを読むことができるので、データベースへのすべての電子メールを書きです。通常

クライアントがそれを受信したときのサーバーがメールを削除メール

+0

私はこの回答に同意しません。電子メールサーバーは、クライアントから受け取った電子メールを削除できますが、これはオプションです。 POP3クライアントがこれを無効/有効にする方法はありません。これを有効または無効にするオプションはありません。オフにすることができるオプションは、RETRコマンドの後にDELEコマンドを送信することです。クライアントがサーバーからフェッチしたばかりのEメールを削除するのを止めます。これは本当に同じではありません! – foens

2
(見通しであり、他のメールクライアントは、多分OpenPop libにも、このための設定を持っているオン/オフこれをオンにする特定の設定があります)

POP3はIMAPのようなストレージシステムではありません。

POP3からメールを受け取ると、通常、メールはサーバーから永久に削除されます(永遠に)。それはちょうどそれが動作する方法です。

おそらく、OpenPOPには、取得後にサーバー上の電子メールを削除しないようにするオプションがあります。

+0

ありがとう、レッピーは、そのオプションは何ですか?私はまた、次のレトリーバーのための電子メールを保持したい。ありがとう – user576510

+0

残念ながら私はOpenPOPで作業していません。ごめんなさい。 – leppie

+0

pop3プロトコルは、メッセージを取得した後でメッセージを削除しません。ほとんどのクライアントは、メッセージがダウンロードされると、サーバーからメッセージを削除します。(pop3 DELEコマンドが使用されています) – Onots

1

編集:私はあなたが自分のPOP3を使用してGmailからメールを取得しようとしている推測している

。 Gmailには、奇妙な非標準のPOP3動作があります。 Gmail のメッセージが取得され、POP3 DELEコマンドが無視されます。 この動作の詳細については、this related questionを参照してください。 POPの標準動作であるため

/// <summary> 
/// Example showing: 
/// - how to fetch all messages from a POP3 server 
/// </summary> 
/// <param name="hostname">Hostname of the server. For example: pop3.live.com</param> 
/// <param name="port">Host port to connect to. Normally: 110 for plain POP3, 995 for SSL POP3</param> 
/// <param name="useSsl">Whether or not to use SSL to connect to server</param> 
/// <param name="username">Username of the user on the server</param> 
/// <param name="password">Password of the user on the server</param> 
/// <returns>All Messages on the POP3 server</returns> 
public static List<Message> FetchAllMessages(string hostname, int port, bool useSsl, string username, string password) 
{ 
    // The client disconnects from the server when being disposed 
    using(Pop3Client client = new Pop3Client()) 
    { 
     // Connect to the server 
     client.Connect(hostname, port, useSsl); 

     // Authenticate ourselves towards the server 
     client.Authenticate(username, password); 

     // Get the number of messages in the inbox 
     int messageCount = client.GetMessageCount(); 

     // We want to download all messages 
     List<Message> allMessages = new List<Message>(messageCount); 

     // Messages are numbered in the interval: [1, messageCount] 
     // Ergo: message numbers are 1-based. 
     for(int i = 1; i <= messageCount; i++) 
     { 
      allMessages.Add(client.GetMessage(i)); 
     } 

     // Now return the fetched messages 
     return allMessages; 
    } 
} 
1

  • ダウンロードメッセージ
  • 削除メッセージ

Openpop例の

一つは、すべてのメッセージを取得する方法を示していますIMAPの標準動作は次のとおりです。

そこ
  • ダウンロードメッセージ
  • Leaveメッセージ

あなたはいつもPOPライブラリが十分に低いレベルで与えられ、その動作を変更することができます。

+0

メッセージを取得した後にメッセージを削除するのは、クライアントの標準的な動作です。しかし、クライアントは、RETR(id)を使用してメッセージを取得し、DELE(id)を使用してメッセージを削除します。取得したメッセージを削除することは、何らかの方法で強制されませんか、間違っていますか? – Onots

関連する問題