在尝试从Gmail下载带有附件的邮件时,我的测试邮件包含一个文本文件作为附件。
附件部分返回文本附件内容类型,甚至正确地返回文件名。但是,通过附件InputStream的循环条件永远不会为零。
经过一些试验和错误后,结果发现text / plain的内容可以通过getContent方法获得(参见下面的示例)
att_mbp.getContent()返回附加文本文件中的内容)
if (BodyPart.ATTACHMENT.equalsIgnoreCase(att_mbp.getDisposition())) {
att_mbp.getContentType();
// process each attachment
// read the filename
file = att_mbp.getFileName();
InputStream stream = att_mbp.getInputStream();
BufferedInputStream br = new BufferedInputStream(stream);
BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(file));
while (br.available() > 0) {
// this loop is never executed for text/plain
bout.write(br.read());
}
bout.flush();
bout.close();
}我的问题是 - 为什么text / plain附件体只能从getContent()中获得,而不能从附加的InputStream实例中获得?