我必须使用IMAP读取我的服务器邮件收件箱,然后我必须在网站上显示一些邮件(具有预定义内容的邮件)供管理员使用,稍后管理员可以从管理面板中删除或转移邮件,但如何删除或者从管理面板转移特定邮件?有没有办法将邮件ID存储在邮件中?如何在收件箱中获取特定邮件的ID?
非常感谢你的时间
答案 0 :(得分:1)
在IMAP中没有商店消息号这样的东西,所以我假设您通俗地使用该术语来表示唯一标识消息的任何数字。如果我对这个假设是正确的,那你就不走运了:也没有这样的数字,至少在IMAP会议期间没有。
以下是您可以尝试的内容:IMAP协议要求每封邮件都有唯一标识符,每个邮箱都有唯一标识符有效值。保证邮件邮箱的唯一标识符和唯一标识符有效性值的组合永远不会引用不同的邮件。因此,如果您使用它来识别消息,则至少保证不会意外删除错误的消息。
问题是,唯一标识符有效性值保证仅在IMAP会话期间保持不变。 PHP通常会为每个页面请求创建一个新的IMAP会话,并在请求结束时关闭会话。另一方面,IMAP规范建议,即使跨会话,唯一标识符也保持不变。这使得以下方法看起来很实用:
您可以致电imap_mailboxmsginfo获取当前唯一标识符有效值。 PHP的IMAP扩展中的大多数其他函数都有一个参数$options
,您可以使用该参数指定您使用唯一标识符而不是消息序列号(其他识别消息的方法,比唯一标识符更易变。
有关IMAP协议的详细信息,请参阅RFC 3501,尤其是 2.3.1消息号。