0

我使用 PHP - Codeigniter (Peeker Library) 作为后端,并使用 IMAP 从多个电子邮件地址获取电子邮件。

我们有一些复杂的搜索条件来查询 imap 文件夹,为了提高脚本的性能,我们只搜索新电子邮件并存储邮箱名称、唯一 ID(邮箱中唯一)、MySQL 表中的一些标题信息。

我想出了两个问题:

  1. 我如何跟踪Deleted / Moved项目?
  2. 有没有办法确定附件是否存在?(因为标题信息没有为附件指示提供任何线索,我尝试使用imap_fetchstructure但它会读取包括附件在内的整个邮件,这需要很长时间才能处理)

笔记 :

我定期在后端运行此脚本(但不是 cron 作业,外部应用程序将定期初始化脚本)。此外,我正在使用 PHP 执行所有这些操作,但有其限制。

请帮我。

谢谢

4

2 回答 2

0

为什么你不使用php imap?与 peeker 库和 php imap 相比,它简单且非常快,总是会收到新的电子邮件。

于 2013-04-17T08:06:05.463 回答
0

首先,在 IMAP 中,没有任何要求意味着FETCH BODYSTRUCTURE要传输带有附件的完整消息数据。要么你的假设是错误的,要么你的 IMAP 库有一个严重的错误,或者你在这里使用了错误的函数。

其次,您提到了跟踪 UID,但没有提及UIDVALIDITY. 阅读RFC 3501以了解其含义。在不了解协议的情况下,您无法正确实现与 IMAP 对话的应用程序。更多的指针也在RFC 4549中给出。

您的第三个问题是关于询问已删除或移动的项目。在基线 IMAP 中,您不能这样做。要知道哪些消息已被删除以及哪些是新消息,唯一的方法是明确跟踪 UID——假设UIDVALIDITY给出并且没有更改,您将自上次以来的 UID 列表与您现在得到的进行比较,并且看看哪些是新的,哪些是过去的。再次阅读 RFC,它们包含对您所有问题的答案以及有关如何优化同步过程的建议。还有一篇关于 IMAP 的论文,其中更详细地介绍了如何进一步改进协议聊天以及哪些扩展是相关的。不过,这不是一个容易的项目。

于 2013-04-17T13:15:56.770 回答