web-dev-qa-db-ja.com

C#でImapにアクセスする

C#で(SSLを使用して)Imapサーバーにアクセスするための組み込みメソッドはありますか、または優れた無料のライブラリはありますか?

107
UnkwnTech

しばらくの間IMAPソリューションを探していましたが、かなりの数を試した後、 AE.Net.Mail を使用します。

[コード]タブに移動し、小さな[ダウンロード]アイコンをクリックして、コードをダウンロードできます。作成者は事前にビルドされたダウンロードを提供していないため、自分でコンパイルする必要があります。 (ただし、NuGetで入手できると思います)。 bin /フォルダーに.dllはなくなりました。

マイナス面と考えられるドキュメントはありませんが、ソースコード(オープンソースに賛成です!)を調べてIntellisenseを使用することで、これを改善できました。以下のコードは、特にGmailのIMAPサーバーに接続します。

// Connect to the IMAP server. The 'true' parameter specifies to use SSL
// which is important (for Gmail at least)
ImapClient ic = new ImapClient("imap.gmail.com", "[email protected]", "pass",
                ImapClient.AuthMethods.Login, 993, true);
// Select a mailbox. Case-insensitive
ic.SelectMailbox("INBOX");
Console.WriteLine(ic.GetMessageCount());
// Get the first *11* messages. 0 is the first message;
// and it also includes the 10th message, which is really the eleventh ;)
// MailMessage represents, well, a message in your mailbox
MailMessage[] mm = ic.GetMessages(0, 10);
foreach (MailMessage m in mm)
{
    Console.WriteLine(m.Subject);
}
// Probably wiser to use a using statement
ic.Dispose();

Github ページをチェックアウトして、最新バージョンといくつかのより良いコード例を確認してください。

88
Dominic K

それが一部の人に役立つことを期待して、あなたはそれで私の行くことをチェックしたいかもしれません:

S22.Imap

いくつかの優れた、十分に文書化された.NET用のIMAPライブラリが利用可能ですが、それらのどれも個人用、商用利用はもちろん無料ではありません...

S22.Imapは、IMAP IDLE通知と、SSLおよび部分的なメッセージフェッチをサポートしています。 documentation を作成し、それを最新の状態に保つように努力しました。なぜなら、私が見つけたプロジェクトでは、ドキュメントがまばらであるか存在しないことが多かったからです。

試してみて、問題が発生した場合はお知らせください!

33
user1662990

IMAPに対する.NETフレームワークのサポートはありません。サードパーティのコンポーネントを使用する必要があります。

https://www.limilabs.com/mail を試してください。手頃な価格で使いやすく、SSLもサポートしています。

using(Imap imap = new Imap())
{
    imap.ConnectSSL("imap.company.com");
    imap.Login("user", "password");

    imap.SelectInbox();
    List<long> uids = imap.SearchFlag(Flag.Unseen);
    foreach (long uid in uids)
    {
        string eml = imap.GetMessageByUID(uid);
        IMail message = new MailBuilder()
            .CreateFromEml(eml);

        Console.WriteLine(message.Subject);
        Console.WriteLine(message.TextDataString);
    }
    imap.Close(true);
}

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

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

17

MailSystem.NET には、IMAP4のすべてのニーズが含まれています。無料でオープンソースです。

(私はプロジェクトに関与しています)

14
user333306

ライブラリを使用してみてください: https://imapx.codeplex.com/

そのライブラリは無料で、オープンソースで、次の例があります。 https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox

4
PACCBET

私は自分で試したことはありませんが、これは無料のライブラリです(試してみてください)

http://www.codeproject.com/KB/IP/imaplibrary.aspx

また、SSLのパラメーターを持つxemailがあります。

http://xemail-net.sourceforge.net/

[編集]あなた(またはクライアント)がプロのメールクライアントのお金を持っている場合、このスレッドにはいくつかの良い推奨事項があります。

電子メール受信ボックスにアクセスするための.NETコンポーネントの推奨事項

2
Espo