【发布时间】:2014-08-22 11:11:32
【问题描述】:
我使用 javax.mail 从给定的邮件地址下载邮件,以获取附件(我需要图像)并自动将图像保存在磁盘上(轮询邮件地址)。这工作正常,除非邮件是从 iPhone 发送的。似乎在这些情况下,图像嵌入在邮件中(我可以在网络邮件窗口中看到图像)并且无法作为附件下载。
- 如何从邮件中提取图片?
- iPhone 邮件和其他邮件在附件方面有什么区别?
- 图像是邮件内容的特殊部分吗?
在我的程序日志中我可以看到:
- 内容类型:多部分/混合;边界=Apple-Mail-...
- numberOfParts = 2
Java 版本为 1.7.0_21 javax.mail 版本是 1.4.7
这是相关代码(大部分取自http://www.codejava.net)
if (contentType.contains("multipart")) {
// content may contain attachments
Multipart multiPart = (Multipart) message.getContent();
numberOfParts = multiPart.getCount();
for (int partCount = 0; partCount < numberOfParts; partCount++) {
MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount);
if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
// this part is the attachment
String fileName = part.getFileName();
attachFiles += fileName + ", ";
if (fileName.endsWith("jpg") || fileName.endsWith("JPG")
|| fileName.endsWith("jpeg") || fileName.endsWith("JPEG")) {
part.saveFile(saveDirectory + File.separator + fileName);
} else {
// attachment is not an image
}
} else {
// this part may be the message content
messageContent = part.getContent().toString();
}
}
if (attachFiles.length() > 1) {
attachFiles = attachFiles.substring(0, attachFiles.length() - 2);
}
} else if (contentType.contains("text/plain") || contentType.contains("text/html")) {
Object content = message.getContent();
if (content != null) {
messageContent = content.toString();
}
}
【问题讨论】:
标签: java iphone jakarta-mail email-attachments