6

POP3 メール フェッチ用に C# で記述されたライブラリである OpenPop をいじっていました。問題なく動作しているように見えますが、メールに明示的に添付されたファイルと、HTML コンテンツのメールの画像などを区別する方法がよくわかりませんでした。このライブラリは、それらをすべて「添付ファイル」として扱います。私のニーズでは、HTML メール内の画像を添付ファイルとは見なしません。
ライブラリのドキュメントから:

MessagePart は、
テキストを保持しておらず、MultiPart メッセージではない場合、または
添付ファイルであることを示す Content-Disposition ヘッダーがある場合、添付ファイルと見なされます。

少なくとも理論的には (私はメールプロトコルに詳しくないので) どうすればいいですか?

4

3 に答える 3

5

私はこのようにしましたが、うまくいくようです:

foreach (OpenPop.Mime.MessagePart fileItem in elencoAtt)
{
    System.Net.Mime.ContentDisposition cDisp = fileItem.ContentDisposition;

    //Check for the attachment...
    if (!cDisp.Inline)
    {
        // Attachment not in-line
    }
    else
    {
        // Attachment in-line
    }
}
于 2012-08-28T13:22:14.687 に答える
5

メールの本文で画像ファイルが参照されているかどうかを確認できます。HTML を解析し、CSS セレクターでimgやプロパティなどのタグを探す必要があります。background-image画像がメッセージ自体で使用されていない場合は、「本物の」添付ファイルと見なしてください。

于 2012-03-04T17:48:57.930 に答える
3

私はOpenPop.NETの開発者です。

これは、添付ファイルを含む電子メールに関する背景情報の一部です。トニー・ザ・ポニーの答えは行くべき道です.

また、OpenPop.NET のその部分を実装していたときに、添付ファイルと非添付ファイルを区別するという問題もありました。MIME にはヘッダーがContent-Dispositionあり、特定の部分が添付ファイルかどうかを判別できます。

たとえば、ここに添付ファイルがあります

Content-Disposition: attachment

ここに、電子メールの HTML 部分の画像を表示できます

Content-Disposition: inline

これはどれほど素晴らしいことのように思えるかもしれませんが、問題は、多くの電子メール クライアントがこれらのヘッダーを追加しないため、OpenPop.NET のようなリーダーにとっては難しいことです。どの画像が参照されているかを確認するために電子メールのすべての HTML 部分を調べないことを選択したため、これはライブラリのユーザー次第です。

問題に対する適切な解決策を開発した場合は、プロジェクトの例として追加できます。

于 2012-03-05T07:49:45.003 に答える