阅读电子邮件imap php

时间:2013-04-17 04:40:50

标签: php mysql codeigniter imap

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

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

我想出了两个问题:

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

      

    我在后端以固定间隔运行此脚本(但不是    一个cron作业,外部应用程序将定期初始化脚本   间隔)。另外,我正在利用PHP进行所有这些限制。

    请帮帮我。

    由于

2 个答案:

答案 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,它详细介绍了如何进一步改进协议聊天以及相关的扩展。不过,这不是一个简单的项目。