2

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

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

是否有可能只获取更改后的电子邮件,对于雷鸟等本地电子邮件客户端的最佳做法是什么?

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

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

编辑

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

4

1 回答 1

1

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

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

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

    setFlags('savedToDb')
    

就是这样。下一次迭代连接到 IMAP 并检查所有没有您设置的标志的消息。这样,您将能够处理在 IMAP 和数据库之间成功同步的所有电子邮件。

于 2014-07-04T12:26:02.677 回答