MailFolder.Fetchを使用してIMAP経由でメッセージをダウンロードし、MailFolder.GetBodyPartを使用して関連する本文部分を取得しています。
処理された情報に加えて、MIMEメッセージの生の表現を取得することは可能ですか?
コード:
var query = CreateSearchQuery(startDate, endDate);
await mailFolder.OpenAsync(FolderAccess.ReadOnly);
var results = await mailFolder.SearchAsync(SearchOptions.All, query);
var messageSummaries = await mailFolder.FetchAsync(results.UniqueIds, DownloadFlags);
後で、パーツを実行し、htmlとプレーンパーツを見つけて、この質問に示すようにそれらをダウンロードすることにより、メッセージをダウンロードします(そうでないパーツのみをダウンロードしますIsAttachment==true
)。
個々のMIMEパーツのみをダウンロードした場合、メッセージ全体の生の表現を取得することはできませんが(すべてのパーツをダウンロードしてメッセージを再構築しない限り)、各MIMEパーツの生の表現を取得できます。から取得WriteTo()
するそれぞれに存在するメソッドを使用してダウンロードするMimeEntity
ことMailFolder.GetBodyPart()
。
メッセージ全体の生の表現が必要な場合、それを取得する最も簡単な方法は、を使用してMailFolder.GetMessage()
から、戻ってきたWriteTo()
メソッドを呼び出すMimeMessage
ことです。またはMailFolder.GetStream()
、次の方法で使用できます。
var raw = folder.GetStream (uid, string.Empty);
完全な生のメッセージが必要であることがわかっている場合は、帯域幅の浪費になるため、最初に個々のパーツをダウンロードしないことをお勧めします。を使用することにした場合は、解析されたオブジェクトにGetStream()
ストリームをフィードしてMimeMessage.Load()
戻すことができMimeMessage
ます。
注:このWriteTo()
メソッドを使用する場合、生のメッセージまたは本文のデータを読み取りたい場合は、ストリーム内で0に戻ることを忘れないでください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加