私はWebドメインからC#で電子メールを読んでおり、OpenPop.netライブラリを使っています。pop3のメールを読んで、なぜメールを読まないのですか?
メールを読んでいますが、新着メールのみが届きます。私はホットメールのようにして読んで、読んだり読んだりするとCSSを使用して、別の方法で表示させたいと思っています。どうすればいいのか教えてください。あなたは何ができるか
おかげ
私はWebドメインからC#で電子メールを読んでおり、OpenPop.netライブラリを使っています。pop3のメールを読んで、なぜメールを読まないのですか?
メールを読んでいますが、新着メールのみが届きます。私はホットメールのようにして読んで、読んだり読んだりするとCSSを使用して、別の方法で表示させたいと思っています。どうすればいいのか教えてください。あなたは何ができるか
おかげ
を使用すると、SMTPサーバからそれらを取得するとき、あなたのアプリケーションを次回開いたときには、あなたはまだ、すべての電子メールを読むことができるので、データベースへのすべての電子メールを書きです。通常
クライアントがそれを受信したときのサーバーがメールを削除メール
POP3はIMAPのようなストレージシステムではありません。
POP3からメールを受け取ると、通常、メールはサーバーから永久に削除されます(永遠に)。それはちょうどそれが動作する方法です。
おそらく、OpenPOPには、取得後にサーバー上の電子メールを削除しないようにするオプションがあります。
ありがとう、レッピーは、そのオプションは何ですか?私はまた、次のレトリーバーのための電子メールを保持したい。ありがとう – user576510
残念ながら私はOpenPOPで作業していません。ごめんなさい。 – leppie
pop3プロトコルは、メッセージを取得した後でメッセージを削除しません。ほとんどのクライアントは、メッセージがダウンロードされると、サーバーからメッセージを削除します。(pop3 DELEコマンドが使用されています) – Onots
編集:私はあなたが自分の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;
}
}
:
Openpop例の
一つは、すべてのメッセージを取得する方法を示していますIMAPの標準動作は次のとおりです。
そこあなたはいつもPOPライブラリが十分に低いレベルで与えられ、その動作を変更することができます。
メッセージを取得した後にメッセージを削除するのは、クライアントの標準的な動作です。しかし、クライアントは、RETR(id)を使用してメッセージを取得し、DELE(id)を使用してメッセージを削除します。取得したメッセージを削除することは、何らかの方法で強制されませんか、間違っていますか? – Onots
私はこの回答に同意しません。電子メールサーバーは、クライアントから受け取った電子メールを削除できますが、これはオプションです。 POP3クライアントがこれを無効/有効にする方法はありません。これを有効または無効にするオプションはありません。オフにすることができるオプションは、RETRコマンドの後にDELEコマンドを送信することです。クライアントがサーバーからフェッチしたばかりのEメールを削除するのを止めます。これは本当に同じではありません! – foens