1

我已经安装了 hMailServer,并且想将电子邮件集成到我们的应用程序中。我已经建立了一个原型,它获取所有文件夹(imap_mailboxmsginfo),然后从所有文件夹中获取所有消息(imap_fetch_overview),然后从每个电子邮件中获取数据,例如(imap_body),我可以将这些保存在本地。

但是,如果一个用户在 100 个文件夹中有 10,000 封电子邮件,然后我想检查他是否在我上次从 hMailServer 下载电子邮件后阅读了特定的电子邮件,我必须得到所有文件夹,从每个文件夹中获取所有电子邮件,然后在它们中搜索唯一的 message_id,直到找到有问题的电子邮件。

我必须这样做,因为“msgno”根本不是唯一的,并且“uid”仅对每个文件夹都是唯一的,如果用户将电子邮件从一个文件夹移动到另一个文件夹,它会更改其“uid”。并且无法访问我在 hMailServer 数据库的 hm_messages 表中看到的“messageid”。因此,“message_id”似乎是我唯一识别电子邮件的唯一方法,但我没有找到允许我通过指定 message_id 从 hMailServer 获取消息的 PHP/IMAP 函数。

有没有办法 (1) 从 hMailServer 获取带有 message_id 的电子邮件,或者 (2) 从 hMailServer 获取通知,例如特定邮件已被删除、标记或移动到另一个文件夹?PHP 电子邮件客户端如何解决这个问题?

4

1 回答 1

0

在我创建的网络邮件中,我同时使用了数据(邮件编号和文件夹)来读取和删除等,我工作得很好。

如果您想为每封邮件获取唯一的 id,请使用此函数 imap_uid。它返回邮箱文件夹中的唯一 ID 和消息编号。

在我看来,对于简单操作或创建路由规则的同步问题,直接使用数据库是一个坏主意。我使用 hmail 数据库的唯一用途是用于管理和统计。

于 2015-06-30T16:03:33.693 回答