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