1

だから私はこのトピックについてたくさんの研究をしました。COMアプローチがあり、それを実装するのにかなりの時間を費やしました。それはIMessage、IConverterSession、いくつかのリフレクションなどを含んでいました。私が見つけたほとんどの回答は、これはC#では使用できないことを示唆していますが、私には方法があるようです。とにかく、私が今までに得たクローズは、空のIStreamオブジェクト(長さ= 0)を受け取ることでした。このメソッドを完全に削除することにしたもう1つの理由は、64ビットバージョンのOutlook2010では機能しない可能性があるという報告です。

より明白な方法は、OutlookからMailItemを取得し、そこからMIMEメッセージの作成を開始することでした。これは非常に面倒でエラーが発生しやすいようです+MIME機能の解析/構築でコードがさらに肥大化します。

OutlookメールアイテムをMIMEメッセージに簡単に変換するために、既存の.NETクラスをそのままにしておく別の方法があるかどうかを考えていました。MailMessage/SmtpClientクラスでうまくいくかもしれないと思いました。だから私はこれをしました:

        SmtpClient client = new SmtpClient();
        client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;

それ以降、メッセージを受け取ることができました(名前を指定できないため、メッセージごとに新しいDropディレクトリを指定しています)。

したがって、実際にファイルを保存せずにコンテンツを取得できるかどうかを確認するために熟考する前に、.Netに別のフィールド(from、to、subject、body、attachments)からMIMEメッセージを作成する他の組み込みの方法はありますか? 、私はMailItemを私からすぐにMIMEメッセージに変えるメソッドを主張しませんが(存在する場合はそれは良いでしょうが)、少なくともいくつかのオブジェクトにプロパティを設定し、そこから構築されたメッセージを取得することができます後で?

どうもありがとう!

4

1 に答える 1

0

さて、これが私がそれを解決した方法です: まず、MailMessage クラスを使用して、メールアイテムからのデータを次のように入力します:

MailMessage msgMIME = new MailMessage();
msgMIME.Subject = mailItem.Subject; // mailItem is the Outlook Message.
// The rest of the logic here, setting from, to, bcc, cc, importance, body.

次に、「コード プロジェクト: Microsoft.Net.Mail.MailMessage への Save() 機能の追加」の記事のコードの一部を使用 します。

そこの FileStream を MemoryStream に置き換えたことを除いて。うまくいくようです。

于 2011-11-18T20:24:28.103 に答える