Java 将IMAPMessage移动(复制)到邮件服务器上的另一个文件夹

Java 将IMAPMessage移动(复制)到邮件服务器上的另一个文件夹,java,email,imap,jakarta-mail,Java,Email,Imap,Jakarta Mail,我的应用程序正在检查收件箱服务器文件夹中邮件主题的模式,如果找到某种模式,我们应该将电子邮件(com.sun.mail.imap.IMAPMessage)移动到另一个文件夹,例如称为“test”(复制也可以完成此工作) 我在互联网上搜索解决方案,但找不到任何有用的东西 您能告诉我如何将IMAPMessage从收件箱移动/复制到服务器上的另一个文件夹吗 谢谢你List templast=new ArrayList(); List<Message> tempList =

我的应用程序正在检查收件箱服务器文件夹中邮件主题的模式,如果找到某种模式,我们应该将电子邮件(com.sun.mail.imap.IMAPMessage)移动到另一个文件夹,例如称为“test”(复制也可以完成此工作)

我在互联网上搜索解决方案,但找不到任何有用的东西

您能告诉我如何将IMAPMessage从收件箱移动/复制到服务器上的另一个文件夹吗

谢谢你

List templast=new ArrayList();
        List<Message> tempList = new ArrayList<>();
        tempList.add(myImapMsg);
        Message[] tempMessageArray = tempList.toArray(new Message[tempList.size()]);
        fromFolder.copyMessages(tempMessageArray, destFolder);
圣殿骑士.add(myImapMsg); Message[]tempMessageArray=templast.toArray(新消息[templast.size()]); copyMessages(tempMessageArray,destFolder);
您可能已经在使用
com.sun.mail.imap.IMAPFolder

该类具有方法
addMessages(Message[]msgs)
。使用它将
消息添加到新文件夹中


或者,正如@gospodin所提到的,有一个
copyMessages(Message[]msgs,Folder destinationFolder)
方法,它提供了将邮件从原始文件夹复制到新文件夹的快捷方式。

使用
copyMessages(),
addMessages()等方法移动邮件是个坏主意
appendMessage()
并删除旧消息,因为这些方法会生成一条新的消息。新邮件的标题中有不同的
邮件ID
。如果您对新邮件进行回复,则收件人无法将回复与其发送的邮件关联,因为他不知道新的
邮件ID
。您必须将文件夹强制转换为
IMAPFolder
IMAPFolder
有方法
moveMessages(Message[]msgs,Folder targetFolder)
在不篡改邮件头的情况下移动邮件
Message ID

hm我想用javaim移动它,不知道这是否可行:List templast=new ArrayList();圣殿骑士.add(myImapMsg);Message[]tempMessageArray=templast.toArray(新消息[templast.size()]);复制消息(tempMessageArray,fromFolder);是的,使用copyMessages方法。我一直很好奇人们在互联网上到底在哪里搜索像这样的东西,但他们的搜索并不涉及实际阅读他们正在使用的API的文档。你能解释一下为什么你不认为阅读javadocs会有帮助,或者你是如何阅读它们却没有找到copyMessages方法的吗?也许我可以做些什么来改进JavaMail文档,使其对像这样的简单案例更有帮助?您能对这段代码添加一些解释吗?纯粹是代码块的答案往往不太有用我在一行中总结:destFolder.copyMessages(新消息[]{myImapMsg},fromFolder);使用yahoo mail,当我尝试使用
copyMessages(Message[]msgs,Folder destinationFolder)
时,我在命令中得到
A4坏[CLIENTBUG]复制坏序列。。。这可能只是雅虎的问题。FWIW
copyMessage()
不会生成新的邮件id,如果
moveMessages()
失败(它可以做到),这是最好的回退。我在outlook365上遇到了一个问题,它不允许我复制(收件箱=>已删除邮件)/然后删除(删除失败,没有错误),但将邮件移动到“已删除邮件”中。那么,如果moveMessages失败,是否考虑将copyMessage作为备用方案?最好加倍检查。