我的应用程序正在检查收件箱服务器文件夹中邮件主题的模式,如果找到某个模式,则应将电子邮件(com.sun.mail.imap.IMAPMessage)移动到另一个文件夹 - 例如称为“test”的文件夹(复制也可以完成任务)。
我在互联网上搜索解决方案,但是没有找到任何有用的信息。
您能告诉我如何将IMAPMessage从收件箱移动/复制到服务器上的另一个文件夹吗?
谢谢
我的应用程序正在检查收件箱服务器文件夹中邮件主题的模式,如果找到某个模式,则应将电子邮件(com.sun.mail.imap.IMAPMessage)移动到另一个文件夹 - 例如称为“test”的文件夹(复制也可以完成任务)。
我在互联网上搜索解决方案,但是没有找到任何有用的信息。
您能告诉我如何将IMAPMessage从收件箱移动/复制到服务器上的另一个文件夹吗?
谢谢
使用 copyMessages()
、addMessages()
或 appendMessage()
等方法移动邮件并删除旧邮件是一个不好的想法,因为这些方法会生成一个新的邮件。新邮件在头部具有不同的 Message-ID
。如果您对新邮件进行回复,则接收者无法将响应与其发送的邮件相关联,因为他不知道新的 Message-ID
。
您必须将文件夹转换为 IMAPFolder
。 IMAPFolder
具有方法 moveMessages(Message[] msgs, Folder targetFolder)
,可移动邮件而不会篡改头部 Message-ID
。
copyMessage()
不会生成新的消息 ID,如果 moveMessages()
失败(它可能会失败),那么 copyMessage()
是最好的备选方案。 - arnt假设您已经在使用com.sun.mail.imap.IMAPFolder
类?
该类具有addMessages(Message[] msgs)
方法。使用它将Message
添加到新文件夹中。
另外,正如@gospodin所提到的,有一个copyMessages(Message[] msgs, Folder destinationFolder)
方法,它提供了一种从原始文件夹复制消息到新文件夹的快捷方式。
copyMessages(Message[] msgs, Folder destinationFolder)
时,我在使用雅虎邮件时收到A4 BAD [CLIENTBUG] COPY Bad sequence in the command
的错误提示。 - Hooli List<Message> tempList = new ArrayList<>();
tempList.add(myImapMsg);
Message[] tempMessageArray = tempList.toArray(new Message[tempList.size()]);
fromFolder.copyMessages(tempMessageArray, destFolder);
fromFolder.copyMessages(tempMessageArray, toFolder);
。 - Steve