C#で自分のWebドメインからメールを読んでいて、OpenPop.netライブラリを使用しています。
メールを読んでいますが、新しいメールしか受信しません。既読と未読の両方をフェッチするようにhotmailのようにしたいので、CSSを使用してそれらを異なる方法で表示します。どうすればいいのか教えてください。
ありがとう
POP3 は IMAP のようなストレージ システムではありません。
POP3 からメールを受信すると、通常はそのメールをサーバーから (永久に) 削除します。それがまさにそれがどのように機能するかです。
おそらく、取得後にサーバー上の電子メールを削除しないことを許可する OpenPOP のオプションがあります。
編集:
POP3 を使用して gmail からメールを取得しようとしていると思います。Gmail には、奇妙な非標準の POP3 動作があります。Gmail は、取得されたメッセージを非表示にし、POP3 DELE コマンドを無視します。この動作の詳細については、この関連する質問を参照してください。
Openpop の例の 1 つは、すべてのメッセージを取得する方法を示しています。
/// <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;
}
}
POP の標準的な動作は次のとおりです。
一方、IMAP の標準的な動作は次のとおりです。
POP ライブラリが十分に低レベルであれば、いつでもその動作を変更できます。
できることは、smtp サーバーからメールを取得するときにすべてのメールをデータベースに書き込むことです。そのため、次にアプリケーションを開いたときに、すべてのメールを読むことができます。
通常、クライアントがメールを受信すると、メール サーバーはメールを削除します (Outlook や他のメール クライアントでは、これをオン/オフする特定の設定があります。OpenPop lib にもこの設定がある可能性があります)。