对于php erp系统中的电子邮件历史记录,我想将带有imap的电子邮件与本地mysql数据库同步。
这比我想要下载带附件的所有邮件(6000条消息约5分钟)更快,但在下载所有邮件后,只下载更改会很棒。问题是我不能依赖电子邮件的日期,因为标志(看到,标记,回答,删除)可能会随着时间的推移而改变。
是否有可能仅获取已更改的电子邮件,本地电子邮件客户端如thunderbird的最佳做法是什么?
据我了解protocol,有一个服务器“推送”方法,但不应该一直连接php脚本,就像本地电子邮件客户端一样。
This answer非常有用,所以我必须下载标题(没有正文)并比较每个请求中的所有消息?
修改
我知道像imapsync这样的工具已经存在,但我想在没有外部依赖的情况下这样做。
答案 0 :(得分:1)
如果目的是从imap服务器下载所有邮件,然后定期检查是否有任何新邮件,以前没有下载并保存到db,那么我建议使用PEAR Net_IMAP类。
PHP本机IMAP无法设置/获取自定义标志,但使用Net_IMAP类可以执行以下操作。
使用Net_IMAP方法setFlags,在服务器上的该消息上设置自定义标志。例如
setFlags('savedToDb')
多数民众赞成。 下一次迭代 连接到IMAP并检查所有那些没有您设置的标志的消息。 这样,您就可以处理在IMAP和数据库之间成功同步的所有电子邮件。