MailKit ライブラリの使い方を学ぼうとしていますが、添付ファイルを取得するのに苦労しています。これまでのところ、私のコードはメールボックスを開き、各メッセージを調べて、送信者、件名、本文、日付などのデータを保存しますが、添付ファイルを処理できません。
ここ、github、および他のサイトにある他の人々のソリューションを使用しようとしましたが、コードで何をしているのかまだ正確には理解できず、ソリューションが機能するようになるとバグが増えるため、ストレスがかかりますすべてのコードを削除します。私は怠け者に見えるつもりはありませんが、誰かがこれを達成する方法を説明できれば幸いです. 私は基本的に、Web フォーム アプリ用のメール クライアントを構築しようとしています。
以下は私のコードです。ご覧のとおり、私はかなり無知です:)
// Open the Inbox folder
client.Inbox.Open(FolderAccess.ReadOnly, cancel.Token);
//get the full summary information to retrieve all details
var summary = client.Inbox.Fetch(0, -1, MessageSummaryItems.Full, cancel.Token);
foreach (var msg in summary)
{
//this code originally downloaded just the text from the body
var text = msg.Body as BodyPartText;
//but I tried altering it so that it will get attachments here also
var attachments = msg.Body as BodyPartBasic;
if (text == null)
{
var multipart = msg.Body as BodyPartMultipart;
if (multipart != null)
{
text = multipart.BodyParts.OfType<BodyPartText>().FirstOrDefault();
}
}
if (text == null)
continue;
//I hoped this would get the messages where the content dispositon was not null
//and let me do something like save the attachments somewhere but instead it throws exceptions
//about the object reference not set to an instance of the object so it's very wrong
if (attachments.ContentDisposition != null && attachments.ContentDisposition.IsAttachment)
{
//I tried to do the same as I did with the text here and grab the body part....... but no
var attachedpart = client.Inbox.GetBodyPart(msg.Index, attachments, cancel.Token);
}
else
{
//there is no plan b :(
}
// this will download *just* the text
var part = client.Inbox.GetBodyPart(msg.Index, text, cancel.Token);
//cast main body text to Text Part
TextPart _body = (TextPart)part;