2012-03-04 6 views
6

私は、POP3メールフェッチのためにC#で書かれたライブラリであるOpenPopを使いこなしていました。それはうまくいくようですが、明示的に添付されたファイルと、HTMLコンテンツメールの写真のようなものとの違いをどうやって見分けるのかについてはあまり理解していませんでした。このライブラリはそれらをすべて「添付ファイル」として扱います。私の必要性のために、私はHTMLメール内の画像を添付ファイルとみなしませんでした。ライブラリドキュメントから
"実際の"メールの添付ファイルとhtmlメールの写真を区別する方法は?

A MessagePartは
場合、添付ファイルであると考えられている - それは、テキストを保持していないと、マルチパートメッセージ 又は
ではない - それは、Content-Dispositionヘッダーを有しますそれが添付ファイルであると言います

私は実際にメールプロトコルに精通していないため、少なくとも理論的に何をすればいいですか、それとも何かを探すべきですか?

答えて

4

イメージファイルが電子メールの本文テキストで参照されているかどうかを確認できます。 HTMLを解析し、CSSセレクタのimgbackground-imageのようなタグを探す必要があります。イメージがメッセージ自体で使用されていない場合は、それを「本物の」添付ファイルと見なします。

3

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

これは添付ファイルを含むメールに関する背景情報の一部です。トニーのポニーの答えが行く方法です。

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

Content-Disposition: attachment 

、ここでは、これが見えるかもしれませんがどのように素敵なメール

Content-Disposition: inline 

のHTML部分に画像かもしれない例えば、ここでは、問題は、多くの電子メール

をですクライアントはこれらのヘッダーを追加しないため、OpenPop.NETのような読者にとっては難しくなります。私たちは電子メールのHTML部分をすべて調べて審査されている画像を確認しないようにしました。したがって、これは今ではライブラリのユーザーの責任です。

問題の良い解決法を開発した場合は、プロジェクトの例として追加することができます。

+0

実際にコンテンツ配置は、電子メールでの空であるときに、非常に多くの場合があります。 'Content-Disposition:attachment'が起こります。多くの電子メールクライアントがそれを使用しています。しかしインラインでは、たとえそれがスペックであってもそれはまだ欠けている。 – Marcin

+0

@foensええ、openpop.netのドキュメントをさらに読んで、MIMEについてもっと読んでいるうちに、これはややこしいことに気付きました。とにかく説明してくれてありがとう、そして何か使えるものがあれば、私はあなたに知らせるだろう、私はいくつかのアイデアを持っていると思う。 – Less

3

私はそれをこのようにやったし、それが動作しているようです:

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 
    } 
} 
関連する問題