Javaでメールの添付ファイルの数だけを取得することは可能ですか?私はこれを使ってみました:
DataHandler handler = message.getDataHandler();
AttachedFileName= handler.getName();
これにより、すべてのメール受信ボックスのすべての添付ファイルが一覧表示されますが、特定のメールの添付ファイルは一覧表示されません。
もしそうなら、これはどのように可能ですか?
ありがとう!
Javaでメールの添付ファイルの数だけを取得することは可能ですか?私はこれを使ってみました:
DataHandler handler = message.getDataHandler();
AttachedFileName= handler.getName();
これにより、すべてのメール受信ボックスのすべての添付ファイルが一覧表示されますが、特定のメールの添付ファイルは一覧表示されません。
もしそうなら、これはどのように可能ですか?
ありがとう!
これにより、添付ファイルの数がわかります。
Multipart multipart = (Multipart) message.getContent();
int attachmentCount = multipart.getCount();
受け入れられた解決策についてコメントするのに十分な評判がありません:
Multipart multipart = (Multipart) message.getContent();
int attachmentCount = multipart.getCount();
しかし、私はそれが以下の理由で理想的であるとは思いません:
多くの電子メールクライアント[例:Thunderbird]は、すべてのHTML電子メールをマルチパート/代替として送信します。HTML部分と代替のプレーンテキスト部分が含まれます。歴史的には、クライアントが表示できる最良の選択肢を選択できるようにするために行われていました。
一部として含まれているすべてが添付ファイルであるとは限りません。たとえば、多くの画像は、配置が「インライン」に設定されているため、電子メールクライアントに添付ファイルとして表示されません。
要約すると、このソリューションは、すべてのHTMLメールを添付ファイル付きとしてカウントし、インライン画像を含むすべてのメールを添付ファイル付きとしてカウントする可能性があります。
通常はアタッチメントとは見なされないパーツを無視する代替方法を次に示します。
private int getAttachmentCount(Message message) {
int count = 0;
try {
Object object = mMessage.getContent();
if (object instanceof Multipart) {
Multipart parts = (Multipart) object;
for (int i = 0; i < parts.getCount(); ++i) {
MimeBodyPart part = (MimeBodyPart) parts.getBodyPart(i);
if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition()))
++count;
}
}
} catch (IOException | MessagingException e) {
e.printStackTrace();
}
return count;
}
私はこの解決策が体の部分を取得することを知っていますが、それがアタッチメントであるかどうかを確認する唯一の正確な方法であると信じています。