php Gmail -使用imap存档电子邮件

cidc1ykv  于 12个月前  发布在  PHP
关注(0)|答案(1)|浏览(135)

如何使用php在imap中归档邮件?
我可以通过以下方式将电子邮件移动到另一个文件夹:

imap_mail_move($inbox, $email_number, "AnotherFolder");

但我在努力

imap_mail_move($inbox, $email_number, "Archive");

电子邮件没有移动。我也试过“[Gmail]\Archive”。

yjghlzjz

yjghlzjz1#

@Max的答案是正确的。在Gmail的伪IMAP中,删除邮件意味着将其存档。
如果你有很多电子邮件要存档,这只是一个小小的优化-imap_delete()一个接一个需要很长时间。使用imap_setflag_full()代替-它允许您指定消息序列:列表(用逗号分隔)、范围(用冒号分隔),可能是两者的组合-IMAP函数的标志参数设置为'\Deleted'。我总是使用UID-唯一的消息ID-而不是默认返回的消息编号。我不记得为什么现在-也许它是更可靠的?如果您使用的是UID,请注意PHP的options常量对于不同的IMAP函数是不同的。对于imap_search(),它是SE_UID,对于imap_setflag_full(),它是ST_UID
imap_mail_move()还允许您指定消息序列,正如@Max所述,它是将电子邮件移动到垃圾桶/垃圾箱的方法:将$mailbox参数设置为[Gmail]/Trash[Gmail]/Bin,具体取决于管辖区。使用imap_list($imap, '{imap.gmail.com:993/imap/ssl}', '*');仔细检查正确的邮箱。
imap_expunge()可能是不必要的,因为在Gmail Web应用程序>>查看所有设置>转发和POP/IMAP >下的“IMAP访问”,自动删除似乎是默认设置。
最后一件事,这应该是非常明显的,但我会包括在情况下,它节省了任何人很多挠头。很长一段时间后,我又开始使用PHP IMAP和Gmail,并重复使用了我以前写的脚本,忘记了在初始连接时设置了只读标志OP_READONLY。产生的IMAP错误本应使事情变得显而易见,但有趣的是,尽管存在错误并处于只读模式,但将电子邮件移动到垃圾桶仍然有效;所以我认为这些错误是由于Gmail的一些奇怪之处。但是对于“删除”电子邮件,即归档电子邮件时,您需要确保未以只读模式连接。

相关问题