我目前正在编写一个应用程序,它应该扫描用户的邮件中的特定附件,并从电子邮件消息中提取它们。
我使用Javamail连接到邮箱,检索消息并解析电子邮件内容。当我检索带有一个附件的消息时,Javamail为我提供了一个包含3个bodypart的MultiPart对象:纯文本电子邮件消息、html电子邮件消息和附件。
但是,如果我在Google App Engine环境中运行相同的代码段,检索相同的电子邮件消息,我只得到2个bodypart:纯文本电子邮件消息和html电子邮件消息。附件不见了。但是,附件内容可以在原始输入流中获得。
这是我用来检索和解析消息的代码部分:
Message[] messages = emailFolder.getMessages();
for(Message message : messages) {
MimeMessage msg = new MimeMessage(emailSession, message.getInputStream());
if(msg.getContent() instanceof Multipart) {
Multipart multipart = (Multipart) msg.getContent();
for(int i = 0; i < multipart.getCount(); i++) {
BodyPart bodyPart = multipart.getBodyPart(i);
System.out.println("ContentType: " + bodyPart.getContentType());
}
}
}
你知道这里发生了什么吗?提前感谢:-)
听起来像是Google App Engine的bug。
你正在阅读来自同一个邮件服务器的同一封邮件,对吗?
可能由于(潜在的)病毒问题而删除/隐藏附件?
如果打开JavaMail会话调试,调试输出显示什么?