2017-04-14 13 views
0

私は、電子メールの添付ファイルをチェックするコードを持っている:私はmp.getBodyPart(index)を反復処理するときEメールから添付ファイルのみを取得します

final Multipart mp = (Multipart) msg.getContent(); 
final int numAttachments = mp.getCount(); 
... 
final Part part = mp.getBodyPart(attachmentNumber); 

ただし、添付ファイルのnumAttachments戻り番号は+ 1、私がいることがわかりI添付ファイルと電子メールを繰り返し処理します。私は電子メールではなく、添付ファイルを取得したいだけです。

私が知っているthat

添付ファイルは、通常はしますが、常に、添付ファイルのコンテンツ・処分を持っていません。添付ファイルは、通常は必ずしもそうではありませんが、ファイル名を持ちます。

私がテストすると、電子メールは常に0番目のインデックスにあり、添付ファイルがそれ以降に来ることがわかります。したがって、0番目のインデックスをスキップすることは解決策になるかもしれませんが、私はこれがすべての電子メールサーバーに有効かどうかわかりません。

電子メールから添付ファイルを取得するにはどうすればよいですか?

+0

「添付ファイル」という概念は実際には定義されていません。ただし、マルチパートのサブタイプが定義されており、パーツの処理方法を理解するのに役立ちます。例えば、multipart/relatedとmultipart/alternativeは非常に異なっています。 – erickson

+0

Exchangeでテストするとき、最初のインデックスは常に電子メールですが、私はそれについて確信しています。最初の部分の後の部分は、それがそうであってもそうでなくても、添付ファイルであると見なすことができます.' http: //www.oracle.com/technetwork/java/faq-135477.html#attachments私の提案を検証していますか? – kamaci

答えて

0

単純なケースでは、multipart/mixedタイプのメッセージは、メッセージのメインコンテンツとして第1の本文部分を持ち、添付ファイルとして他の本体部分を持ちます。第1の身体部分は、単純なテキスト/プレーン部分であってもよく、または複数部分/代替部分または複数部分/関連部分であってもよい。しかし、最初の身体部分をスキップすることは、通常あなたが望むことをするでしょう。

さらに多くの複雑なケースがMIMEによって許可されています。これらのケースを処理するかどうか、どのように処理するかを決定する必要があります。最も複雑なケースは、署名されたメッセージと暗号化されたメッセージですが、比較的稀です。

関連する問題