我想将全部数据(所有子文件夹)从一个imap服务器传输到另一个服务器, 没有任何数据丢失。
答案 0 :(得分:1)
我不确定'PHP电子邮件迁移'是什么意思,因为我没有看到PHP如何适应这个等式。
也就是说,有一些MAP迁移工具可以完成您所描述的内容。我是一个名为YippieMove的产品的联合创始人,可以做到这一点,但也有其他开源替代品,如imapsync。如果你在Google上花一些时间,你会发现更多选择。
答案 1 :(得分:1)
正如vpetersson所提到的,它不太适合PHP部分,因为使用任何imap客户端软件也可以轻松地将电子邮件从一个Imap迁移到另一个Imap服务器,例如,microsoft outlook,Mozilla Thunderbird,Apple邮件客户端等。 你怎么做才很简单。 如果您需要迁移的电子邮件帐户数量有限,则以下是Mozilla Thunderbird的示例工作流程,您也可以在任何其他客户端上执行相同的流程。
或者如果您必须在PHP中执行此操作,可能是因为您有数百个电子邮件帐户并且使用上述方法不切实际,请按照以下步骤操作。
您也可以使用PHP_Imap库,但如果您可以控制服务器,我建议您使用PEAR的Net_IMAP库,它在php statdard IMAP库中缺少某些功能。
连接到服务器
$ imapServer = new Net_IMAP($ emailHost,143); $ loggedIn = $ imapServer-> login($ loginName,$ password); if($ loggedIn == true){ //代码在这里 }
找到所有文件夹
$ mBoxes = $ imapServer-> getMailboxes('',0,true);
$ mBox = $ imapServer-> selectMailbox($ folderName);
查找所有消息
$ msgsList = $ imapServer-> getMessagesList();
获取rawmessage。
的foreach($ msgUid){ $ fullRawMail = $ imapServer-> getMessages($ msgUid,false); }
连接目标服务器
检查目标服务器是否与源文件夹相同,如果没有,则创建文件夹
将原始邮件上传到目标服务器[特定文件夹]。你可以使用php的imap_append函数。
imap_append($ ImapStream,$ folderName,$ fullRawMail,“\ Seen”);