我使用PHP - Codeigniter(Peeker Library)作为后端,并使用IMAP从多个电子邮件地址中提取电子邮件。
我们有一些复杂的搜索条件来查询imap文件夹,提高脚本的性能我们只搜索新的电子邮件和存储邮箱名称,唯一ID(邮箱中唯一),MySQL表中的一些头信息。
我想出了两个问题:
Deleted / Moved
项目? imap_fetchstructure
但它会读取整个消息,包括需要很长时间才能处理的附件)注意:
我在后端以固定间隔运行此脚本(但不是 一个cron作业,外部应用程序将定期初始化脚本 间隔)。另外,我正在利用PHP进行所有这些限制。
请帮帮我。
由于
答案 0 :(得分:0)
为什么你没有使用php imap?与peeker库相比,它简单而且速度非常快,php imap总是会收到新邮件。
答案 1 :(得分:0)
首先,在IMAP中,没有要求暗示FETCH BODYSTRUCTURE
将传输包含附件的完整消息数据。您的假设是错误的,或者您的IMAP库有严重错误,或者您在这里使用了错误的函数。
其次,您提到了跟踪UID,但没有提及UIDVALIDITY
的任何内容。阅读RFC 3501以了解其含义。在不知道协议的情况下,您无法正确地实现应用程序正确地说IMAP。 RFC 4549中还给出了进一步的指示。
您的第三个问题是要求删除或移动的项目。在基线IMAP中,您无法做到这一点。知道哪些消息已被删除以及哪些是新到达的唯一方法是显式跟踪UID - 假设UIDVALIDITY
已被给定且未更改,您比较自上次以来的UID列表与你现在有了,看看哪些是新的,哪些已经消失了。再次阅读RFC,它们包含您所有问题的答案以及有关如何优化同步过程的建议。还有一个thesis about IMAP,它详细介绍了如何进一步改进协议聊天以及相关的扩展。不过,这不是一个简单的项目。