C#でImapにアクセスする[終了]


112

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



7
いいえ。投稿したリンクは、Gmail専用のIMAPに関連しています。ただし、この投稿はそうではありません。

72
質問を重複と言ったりマークしたりするときは、さらに注意してください。私は見てのはうんざりだ「重複:[リンク]どこでも他のリンクがどのように答えるために失敗した時間のAロット。 『デュプリケーター』は、それは同じ質問だかどうか、とにかく知りたい!
βӔḺṪẶⱫŌŔ

7
質問を閉じたので、これを回答として追加することはできません。github.com / jstedfast / MailKitは、適切なオプションであり、アクティブなプロジェクトのようです。
Rory

4
有用な質問を建設的ではないとマーク付けすることは確かに建設的ではない...
ロバートJ

回答:


90

私はしばらくの間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", "name@gmail.com", "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ページをチェックアウトして、最新バージョンといくつかの優れたコード例を確認してください。


1
これは本当に笑うには余りにも簡単に見えます。見てみるよ!
bendr 2011

4
@jase-そうです!問題が正確に何であるかはわかりませんが(プロパティファイルのように見えますか?)、関連するすべてのファイルを新しいクラスプロジェクトにコピーすることで、問題をコンパイルすることができました。どのような場合でも、私はライブラリをビルドしたので、それらを.dll参照としてプロジェクトに追加できます。dl.dropbox.com/u/8037514/AE.Net.Mail.zip免責事項として、これには元のプロジェクトに付属するすべての保証と著作権が付属します。問題が発生した場合など、私は責任を負いません。幸運!
ドミニクK

4
+1 VS2010でAE.Net.Mailの最新のコミットをダウンロードしてコンパイルしたところ、完全に動作しました。私が持っていたくらい、先端に感謝をImapXとのより良い体験を。ここのコードは私に良いジャンプスタートを与えました。
RedFilter

8
なぜ人々はこのような素晴らしいものを書き、基本的にドキュメントを含めないのですか?わかりません
Simon_Weaver 14

2
動作しますが、新しいバージョンでは、コンストラクターは次のようになります。ImapClient ic = new ImapClient( "imap.gmail.com"、 "name@gmail.com"、 "pass"、AuthMethods.Login、993、true);
Ogglas

34

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

S22.Imap

.NET用の優れた、十分に文書化されたIMAPライブラリがいくつかありますが、商用利用はもちろんのこと、個人的に無料で利用できるものはありません...そして、私が見つけたほとんど放棄された無料の代替案に満足していませんでした。

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

ぜひお試しいただき、問題が発生した場合はお知らせください。


最初にAE.Net.Mailを試してみましたが、ドキュメントとこれまでに必要だった機能の両方で、S22.Imapの方が優れていることがわかりました。
angularsen 2013

S22.Imapのコンセプトが好きでした。しかし、私が欠けているのは、インデックスまたはメッセージ番号を介してアクセスすることです。
Tejasvi Hegde 2015

S22.Imapの300乾杯。シンプルで効率的で、実際のシナリオで役立ちます。.Search()i sbrilliant
Vishnoo Rath

このライブラリを使用してメールボックスとIMAPの同期を維持するにはどうすればよいですか?
JackXandar

1
ログインしようとすると「NO [WEBALERT some url] Webログインが必要です」というメッセージが表示されるInvalidCredentialsExceptionが発生する理由は何ですか?GmailアカウントでIMAPが有効になっています。アイデア?
Auri Rahimzadeh 2017

19

IMAPの.NET Frameworkサポートはありません。サードパーティのコンポーネントを使用する必要があります。

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


3
ダウンロードして数分で実行できました:)とてもいいです
Moulde 2013年

パスワードを渡す代わりに、oAuth 2を使用してトークンを渡すことをサポートしていますか?
user1166905 2013年


2
素晴らしいコンポーネント、魅力のように機能します。試用版(ほぼ完全に機能する)を数週間テストし、ライセンスを購入しました。
Alex

1
これは確かに素晴らしいコンポーネントです。私たちが試したすべてのオープンソースのものとは異なり、これは実際に生きていて最新のものです(私は2016年にこれを書いています)。@PawelLesnikowski PSありがとうございます。私はいかなる方法でも提携していません。
jazzcat 2016年

15

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

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


2
プロジェクトはアクティブですか?最新バージョン:2009年12月14日、午前9時
Kiquenet

1
ほとんどのニーズはすでにカバーされているため、今日追加する機能はそれほど多くありません。バグ修正と小さな改善のみが提出時にコミットされます。しかし、それほど多くはありません。ライブラリは非常に堅牢です。

4
このプロジェクトは死んでいるようです。IMAP4では適切に動作せず、更新も作成者からの回答もありません
Denis Vuyka

6
@alhambraeidosと@Denisは正しいです。プロジェクトは事実上死んでいます。サンプルは、VS 2008でも2010でも、そのままではビルドされません。サンプルをアップコンバートした後、16の参照問題を処理する必要がありました。ドキュメントは古く、CodePlexページは過去1年以上の問題/コメントについて未回答のままです。私はあきらめ、Mail.dllを購入しました(いいえ、私はそれらとは関係ありません)。
sohtimsso1970

2
プロジェクトはかなり死んでいて、IDLEは適切に機能していませんmailsystem.codeplex.com/workitem/23586
Greg Dean

5

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

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


参考:imapxはIDLEをサポートしていないようです
グレッグディーン

ImapXは現在、IDLE拡張をサポートしています。
Pavel Azanov、2014年

私の経験では、このライブラリはAE.Net.Mailよりもかなり遅いです-それは何の意味もありませんが警告されます!
Simon_Weaver 14

1
このライブラリには主要なバグ(v2.0.0.18)が含まれています。
デビッド

2

私自身は試していませんが、これはあなたが試すことができる無料のライブラリです(このライブラリのSSL部分についてはよくわかりません)。

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

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

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

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

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


codeprojectのImaplibraryは私が使用していたものですが、必要な機能がありません。xemailをチェックアウトします
UnkwnTech


リンクを変更しました。お知らせいただきありがとうございます。
Espo、2011年

REE:codeproject.com/KB/IP/imaplibrary.aspxあなたの答えで; すごいかっこいい。先週からメールクライアントに使用しており、問題は発生していません。
βӔḺṪẶⱫŌŔ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.