即使将MessageIDTerm传递给该方法,JavaMail Folder.search()也会返回多条IMAP消息。当消息是后续转发原始消息时,似乎会发生这种情况。 JavaMail版本是1.4.4。邮件服务器是MS Exchange 2013.用户使用MS Outlook发送电子邮件。 这是代码:
MessageIDTerm messageIDTerm = new MessageIDTerm(uniqueMessageID);
Message[] messages = folder.search(messageIDTerm);
如果uniqueMessageID是已转发的电子邮件的消息ID,则messages数组将包含具有uniqueMessageID的消息以及所有后续转发的消息。 这种行为是否正确?有没有办法只获取传递给搜索方法的messagedID的消息?
答案 0 :(得分:1)
很可能它是Exchange中的一个错误。打开JavaMail Session debugging,它应该提供足够的信息,以便向Microsoft报告错误。
转发的邮件是否作为新邮件的附件发送?如果是这样,Exchange可能正在搜索附件中的标题以及主要消息,这可能是错误的。
顺便说一下,您可能想要升级到current 1.5.3 version of JavaMail。
答案 1 :(得分:0)
要仅获取消息,请尝试此
public void loadFolder() {
if (store != null && store.isConnected()) {
try {
final Folder inbox = store.getFolder("foldername");
inbox.open(Folder.READ_ONLY);
final FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.USER), false);
final Message[] messages = inbox.search(ft);
for (Message message : messages) {
try {
if (message.getContentType().contains("text")) {
final String text = (String) message.getContent();
System.out.println(text);
}
} catch (Exception e) {
LOG.error("", e);
}
}
}
使用标记,您可以指定搜索