16

C# で Windows サービスを作成して、電子メールの受信トレイを定期的に監視し、受信したメッセージの詳細をデータベース テーブルに挿入するように依頼されました。

私の本能は POP3 を介してこれを行うことであり、確かに、「.NET POP3 コンポーネント」をグーグルで検索すると、数え切れないほど (OK、146,000) の結果が得られます。

誰かが以前に似たようなことをしたことがありますか?銀行を破ることのないまともなコンポーネントをお勧めできますか (最大数百ドル)?

POP3 ではなく IMAP を使用する利点はありますか?

4

11 に答える 11

7

IMAPプロトコルを使用すると、サブフォルダーにアクセスし、メッセージのステータス(表示/非表示)を設定できます。また、 IDLE機能を使用して即時通知を行うこともできます。

Mail.dllには、POP3IMAPSSLをサポートするSMTPコンポーネント、および強力なMIMEパーサーが含まれています。

using(Imap imap = new Imap())
{
    imap.Connect("imap.server.com");    // or ConnectSSL for SSL
    imap.Login("user", "password");

    imap.SelectInbox();
    List<long> uids = imap.Search(Flag.Unseen);
    foreach (long uid in uids)
    {
        IMail mail = new MailBuilder()
            .CreateFromEml(imap.GetMessageByUID(uid));
        Console.WriteLine(mail.Subject);
    }
    imap.Close();
}

これは私が作成した商用製品であることに注意してください。

https://www.limilabs.com/mailからダウンロードできます。

于 2010-12-13T10:42:19.160 に答える
6

私のアプリケーション BugTracker.NET では、無料でオープン ソースの SharpMimeTools を使用しています。それは非常に信頼できます:

http://anmar.eu.org/projects/sharpmimetools/

ファイル POP3Client.cs、POP3Main.cs、insert_bug.aspx を参照してください。

于 2008-09-23T07:42:35.707 に答える
4

チルカットをお勧めします。彼らはかなり安定したコンポーネントを持っており、1 人の開発者に対して 99 ドルという安さで電子メール コンポーネントを入手できます。個人的には、たったの 289 ドルで、多くの便利なコンポーネントが付属しているため、コンポーネントのパッケージ全体を使用する方がお得だと思います。私は彼らとは何の関係もありませんが、私のように聞こえるかもしれません。

于 2008-08-20T14:01:29.303 に答える
3

AdvancedIntellectをお勧めします。POP3 および IMAP 用のコンポーネント (ASPNetPOP3 および ASPNetIMAP) があります。質の高い、非常に反応の良いサポート - 週末に質問への回答を受け取ったことを覚えています。

于 2009-02-06T13:40:23.633 に答える
3

Rebex Mail コンポーネントを確認してください。IMAPSMTPPOP3プロトコル、およびS/MIMEパーサーが含まれています。

POP3には、「未読」メッセージの概念や、特定の条件に一致するメッセージの検索という概念がありません。POP3受信トレイ内のすべてのメッセージを返すだけです。

を使用IMAPすると、未読メッセージ、指定した時間以降に到着したメッセージ、特定のユーザーからのメッセージなどを送信するように IMAP サーバーに指示できます。すべてをクライアントにダウンロードして、そこでフィルタリングを行う必要はありません。

次のコードは、クラスImapを使用してサーバーから未読メッセージをダウンロードする方法を示しています。Rebex.Net.Imap

// create client, connect and log in 
Imap client = new Imap();
client.Connect("imap.example.org");
client.Login("username", "password");

// select folder 
client.SelectFolder("Inbox");

// get message list - envelope headers 
ImapMessageCollection messages = client.Search
  (
     ImapSearchParameter.HasFlagsNoneOf(ImapMessageFlags.Seen)
  ); 

// display info about each message 
Console.WriteLine("UID | From | To | Subject");
foreach (ImapMessageInfo message in messages)
{
    Console.WriteLine(
        "{0} | {1} | {2} | {3}",
        message.UniqueId,
        message.From,
        message.To,
        message.Subject);
}

// disconnect 
client.Disconnect();

複数の検索条件を組み合わせた例を次に示します。これにより、100KB を超える昨年のメッセージが返されます。

ImapMessageCollection messages = client.Search
  (
     ImapSearchParameter.Arrived(DateTime.Now.AddYears(-1), DateTime.Now),
     ImapSearchParameter.Size(1024 * 100, Int32.MaxValue)
  ); 

試用版はrebex.net/secure-mail.net/download.aspxからダウンロードできます。

于 2010-03-04T22:03:58.447 に答える
2

オープン ソースの POP3 実装または自由に利用できるものを使用する場合は、コードを変更して、必要な方向に拡張することができます。簡単な Google の結果、メッセージを取得するためにCode Project からこの C# POP3 コードが生成されました。

独自のものを展開する、または少なくともそれを拡張することには、力を与える何かがあります。

代替テキスト

于 2009-10-21T22:11:02.877 に答える
1

Lumisoftはオープンソースであり、IMAP および POP クライアント (その他のもの) が含まれています。何年も問題なく使用しています。

于 2008-09-30T05:30:54.003 に答える
0

WCFはどうですか?それは無料です。

Exchange サーバーがある場合: http://msdn.microsoft.com/en-us/library/bb397812.aspx

pop3 の例: http://bartdesmet.net/blogs/bart/archive/2006/09/13/4417.aspx

于 2008-08-20T13:58:18.343 に答える
0

C#Mail は $0 ですが、GNU GPL ライセンスも取得しているため、問題ないことを確認してください。

于 2010-05-27T08:52:07.563 に答える
0

IMAPX2が最高です。IMAP を使用すると、メール サーバー内のフォルダーを制御できます。これは、POP ではできないことです。IMAPX は、調べることができるオープン ソース コードであり、無料で使用できます。

IMAPX は簡単で信頼性があります。

于 2014-07-16T21:00:20.257 に答える
0

MailBee.NET オブジェクトを使用してこれを行うことができます: http://www.afterlogic.com/products/net-email-components

IMAP を実際に使用することをお勧めしますが、特にここで既に説明した IDLE サポートを提供しているため、POP3 でも同じことができます。両方のアプローチの簡単な説明と、IMAP IDLE シナリオの完全なサンプルがあります。

http://www.afterlogic.com/wiki/Getting_notifications_about_new_messages_in_mailbox_%28IMAP_IDLE_and_polling%29

私は AfterLogic と提携していることにご注意ください。サポートが必要な場合は、喜んでお手伝いいたします。当社の Web サイトの [Request Support] オプションを確認してください。

于 2013-05-28T06:43:02.847 に答える