0

これについては、stackoverflow に関する他の多くの質問を見てきましたが、まだ混乱しています。

メールの添付ファイルをダウンロードしたい - これは正常に実行できましたが、メールに添付ファイルが 1 つしかない場合のみです。メールに複数の添付ファイルがあると、機能しなくなります。

メールごとに複数の添付ファイルをダウンロードするにはどうすればよいですか?

また、ダウンロード時にファイルの拡張子を判別する方法はありますか? 現在、たとえば、pdf の添付ファイルがある場合、ファイルはダウンロードされますが、.pdf がないため、Windows はファイルの種類を認識しません。

以下のコードはここからのものです: MailKit save Attachments。私はそれに基づいてコードを作成してきました。

foreach (var attachment in message.Attachments)
{
    using (var stream = File.Create ("fileName"))
    {
        if (attachment is MessagePart)
        {
            var part = (MessagePart) attachment;
            part.Message.WriteTo (stream);
        }
        else
        {
            var part = (MimePart) attachment;
            part.ContentObject.DecodeTo (stream);
        }
    }
}

助けてください!ありがとう!

4

1 に答える 1

1

貼り付けたコードは、すべての添付ファイルを既に保存しています。

生のメッセージ ソースを見てください。添付ファイルと見なされる各「添付ファイル」にはヘッダーがありContent-Disposition: attachmentますか? そうでない場合は、それが問題です。

代わりにmessage.BodyParts、独自のロジックを使用および適用して、パーツが「添付ファイル」と見なされるものであるかどうかを判断できます。

また、ダウンロード時にファイルの拡張子を判別する方法はありますか? 現在、たとえば、pdf の添付ファイルがある場合、ファイルはダウンロードされますが、.pdf がないため、Windows はファイルの種類を認識しません。

はい。FileNameオブジェクトのプロパティでファイル拡張子を確認できMimePartます。

于 2016-06-07T01:17:17.900 に答える