1. ホーム
  2. c#

[解決済み] C#でMS Exchangeの電子メールを読み込む

2023-03-04 02:42:56

質問

MS Exchange サーバー (私の会社の内部) の特定のメールボックスを監視し、そこから電子メールを読む機能が必要です。また、送信者の電子メール アドレス、件名、メッセージ本文を読み、添付ファイルがある場合はダウンロードできるようにする必要があります。

C# (または VB.NET) を使用してこれを行う最良の方法は何でしょうか。

どのように解決するのですか?

混乱します。.NET interop DLL を介した MAPI または CDO は Microsoft によって公式にサポートされていない --一見うまくいっているように見えますが、メモリモデルが異なるため、メモリリークの問題があります。CDOEX を使用することもできますが、これは Exchange サーバー自体で動作するだけで、リモートでは動作しませんので意味がありません。Outlook と相互運用することもできますが、Outlook に依存することになり、過剰な作業です。最後に Exchange 2003 の WebDAV サポート を使うこともできますが、WebDAV は複雑で、.NET は組み込みのサポートが貧弱で、(さらに悪いことに)Exchange 2007 では はほぼ完全に WebDAV のサポートをほぼ完全に停止しています。

どうするんだ?結局、私は AfterLogicのIMAPコンポーネント を使い、IMAP経由でExchange 2003サーバと通信することにしました。(私は通常、フリーまたはオープンソースのライブラリを探しますが、.NET のものはすべて、特に 2003 の IMAP 実装のいくつかの癖に関しては、欲しくなることがわかりました)。他にもあることは知っています)。

しかし、あなたの組織が Exchange 2007 を使用している場合は、幸運です。 Exchange 2007 には、SOAP ベースの Web サービス インターフェースが搭載されています。 これは、Exchange サーバーと対話するための、言語に依存しない統一された方法を最終的に提供するものです。2007+を要件とするならば、これは間違いなくお勧めできる方法です。(残念なことに、私の会社では、quot; but 2003 isn't broken"というポリシーがあります)。

Exchange 2003 と 2007 の両方をブリッジする必要がある場合、IMAP または POP3 が間違いなく最適な方法です。