我的应用程序正在检查收件箱服务器文件夹中邮件主题的模式,如果找到某个模式,我们应该将电子邮件(com.sun.mail.imap.IMAPMessage)移动到另一个文件夹 - 名为'test '例如(复制也可以完成这项工作)。
我在互联网上搜索了解决方案,但我找不到任何有用的东西。
您能告诉我如何将IMAPMessage从收件箱移动/复制到服务器上的另一个文件夹?
谢谢
答案 0 :(得分:6)
据推测,您已经在使用com.sun.mail.imap.IMAPFolder
?
该类的方法为addMessages(Message[] msgs)
。使用它将Message
添加到新文件夹。
或者,如@gospodin所述,有一个copyMessages(Message[] msgs, Folder destinationFolder)
方法,它提供了将消息从原始文件夹复制到新文件夹的快捷方式。
答案 1 :(得分:3)
List<Message> tempList = new ArrayList<>();
tempList.add(myImapMsg);
Message[] tempMessageArray = tempList.toArray(new Message[tempList.size()]);
fromFolder.copyMessages(tempMessageArray, destFolder);
答案 2 :(得分:0)
使用copyMessages()
,addMessages()
或appendMessage()
之类的方法移动一条消息并删除旧消息是一个坏主意,因为这些方法会产生一个新 >消息。新邮件的标题中有一个不同的Message-ID
。如果您对新消息做出响应,则接收者无法将响应与其发送的邮件相关联,因为他不知道新的Message-ID
。您必须将文件夹转换为IMAPFolder
。 IMAPFolder
使用方法moveMessages(Message[] msgs, Folder targetFolder)
来移动邮件而不会篡改标头Message-ID
。