使用javamail检查附件而不获取邮件内容
我试图找到一些答案,甚至是一个如何做到这一点的提示,但没有运气 我想检查电子邮件是否有任何附件。但如果我使用建议的代码:使用javamail检查附件而不获取邮件内容,java,email,jakarta-mail,Java,Email,Jakarta Mail,我试图找到一些答案,甚至是一个如何做到这一点的提示,但没有运气 我想检查电子邮件是否有任何附件。但如果我使用建议的代码: Object content = bPart.getContent(); if (content instanceof String) { if (Part.ATTACHMENT.equalsIgnoreCase(bPart.getDisposition()) || StringUtils.isNotBlank(bPart.getFileName())) {
Object content = bPart.getContent();
if (content instanceof String) {
if (Part.ATTACHMENT.equalsIgnoreCase(bPart.getDisposition()) || StringUtils.isNotBlank(bPart.getFileName())) {
// It's attachment
haveAttachment = true;
}
else {
// It's text or html
emailBody = content.toString();
}
}
else if (content instanceof InputStream) {
if (Part.ATTACHMENT.equalsIgnoreCase(bPart.getDisposition()) || StringUtils.isNotBlank(bPart.getFileName())) {
// It's attachment
haveAttachment = true;
}
}
我必须对我的电子邮件使用getContent()函数,并且邮件在服务器上会自动标记为已看到(已阅读)
有谁能帮我写一个简单的函数来获取基本的电子邮件信息,并显示邮件是否有附件,而不必获取整个邮件内容?实际上,我只需要附件方面的帮助,因为我已经知道如何获取其他基本标题字段,它们不请求getContent()方法,也不将我的电子邮件标记为可见
普通电子邮件客户端是如何做到这一点的?我想一定有一些快速且简单的方法来检查电子邮件是否有附件
提前谢谢你
编辑:或者,有没有一种方法可以使用getContent()函数而不将电子邮件标记为可见的?我不知道您从哪里得到“建议”代码,但它肯定不是来自JavaMail网站 你会想看这个的
要检查部件的MIME类型,请使用isMimeType方法。您可以在.中找到一个示例,在这一点上,什么是MIME类型对我来说并不重要。我只是想知道有没有附件。此外,如果您实现了他们在常见问题解答中所说的内容(您在邮件中搜索附件部分),则会得到建议的代码。检查MIME类型是在不实际加载任何内容的情况下确定是否存在附件的方式。正如常见问题解答所解释的,“此邮件是否有附件?”在一般情况下不是一个简单的问题。如果你不关心不寻常的情况,那就简单一点。为了得到MIME类型的消息,我必须先得到它的内容,如他们的FAQ示例“如何在有附件的消息中找到主消息体?”。请,如果你现在能找到一种方法来读取消息(或消息部分)的MIME类型而不获取其内容,这将对我非常有帮助。现在,你不必获取消息内容来确定MIME类型。正如我所说,使用这个方法。你看过msgshow.java示例程序了吗?实际上你是对的。直到现在我才知道msgshow.java示例代码。我将测试代码,看看它是否能在更复杂的情况下正确工作,如果它能正确工作,这肯定是公认的答案。