通过imap将电子邮件与本地数据库同步

时间:2013-09-14 17:34:30

标签: php imap sync

对于php erp系统中的电子邮件历史记录,我想将带有imap的电子邮件与本地mysql数据库同步。

这比我想要下载带附件的所有邮件(6000条消息约5分钟)更快,但在下载所有邮件后,只下载更改会很棒。问题是我不能依赖电子邮件的日期,因为标志(看到,标记,回答,删除)可能会随着时间的推移而改变。

是否有可能仅获取已更改的电子邮件,本地电子邮件客户端如thunderbird的最佳做法是什么?

据我了解protocol,有一个服务器“推送”方法,但不应该一直连接php脚本,就像本地电子邮件客户端一样。

This answer非常有用,所以我必须下载标题(没有正文)并比较每个请求中的所有消息?

修改

我知道像imapsync这样的工具已经存在,但我想在没有外部依赖的情况下这样做。

1 个答案:

答案 0 :(得分:1)

如果目的是从imap服务器下载所有邮件,然后定期检查是否有任何新邮件,以前没有下载并保存到db,那么我建议使用PEAR Net_IMAP类。

PHP本机IMAP无法设置/获取自定义标志,但使用Net_IMAP类可以执行以下操作。

  1. 连接到IMAP服务器
  2. 阅读消息。
  3. 保存到DB。
  4. 使用Net_IMAP方法setFlags,在服务器上的该消息上设置自定义标志。例如

    setFlags('savedToDb')
    
  5. 多数民众赞成。 下一次迭代 连接到IMAP并检查所有那些没有您设置的标志的消息。 这样,您就可以处理在IMAP和数据库之间成功同步的所有电子邮件。