SO 私は宿題のメール クライアントを作成しています。要件の 1 つは、受信した添付ファイルを処理することです。最初にやりたいことは、メールに添付ファイルがあるかどうかを表示することです。From、Subject、Size、Date、Attachment が並んでいる AWT リストがたくさんあります。
テスト目的で、ディスポジションが null を返す場合は、attachmentList に x を入れます。インラインの場合は i を付け、添付ファイルの場合はファイル名を表示する必要があります。ただし、添付ファイルがあり、gmail webmail のヘッダーを見ると、コンテンツの性質が添付ファイル (すべて小文字) として表示される電子メールでも、電子メールの getDisposition は依然として null を返します。ATTACHMENT や添付ファイル、または null 以外の何かを返さない理由がわかりません。関連するコードは次のとおりです。
for (int i = 0; i < messages.length; i++) {
Address[] froms = messages[i].getFrom();
String email = froms == null ? null : ((InternetAddress) froms[0]).getAddress();
fromList.add(email);
subjectList.add(messages[i].getSubject());
sizeList.add("" + messages[i].getSize());
dateList.add(messages[i].getReceivedDate().toString());
String disposition = messages[i].getDisposition();
System.out.println("Disposition is " + disposition + ".");
if (disposition == null) {
attachmentList.add("x");
}
else if ("INLINE".equalsIgnoreCase(disposition)) {
attachmentList.add("i");
}
else if ("ATTACHMENT".equalsIgnoreCase(disposition)) {
String fileName = messages[i].getFileName();
if (fileName != null) {
attachmentList.add("attachment " + fileName);
}
}
}
別のテスト コードである "the disposition is..." が出力され、常に null または INLINE が出力されることに気付くでしょう。私が見ている特定の電子メールは約 700k で、2 つの添付ファイルが含まれています。