2

主要问题

我一直在构建一个自定义 IMAP 类(在 XAMPP 上本地测试/使用),但是由于某种原因,当我想使用该函数imap_mail_move同时尝试使用CP_UID标志保留 UID 时,消息似乎没有移动什么-so-但是,删除标志它可以完美地工作。

我调用下面的函数:

return @imap_mail_move($this->stream, $messageNumber, $folder, CP_UID);

IMAP 已成功连接(尽管总是SECURITY PROBLEM: insecure server advertised AUTH=PLAIN (errflg=1)在第 0 行出现错误,并且正确定义了消息编号和移动到文件夹。

删除@没有任何关于它为什么不起作用的线索,添加or die('error!')到末尾也是如此 - 它就像它起作用但什么都不做。

类中的 Destruct 函数存在以下内容(因此它关闭 IMAP 连接并进行清除):

@imap_close($this->stream, CL_EXPUNGE);

更多 IMAP 问题

我将所有电子邮件保存在 MySQL 数据库中,以便更快地处理、自定义处理、搜索等。但是,我注意到在 Outlook(等)中移动邮件时可能会出现一些问题。

更新消息的 UID 的最佳方法是什么 - 因为我将其存储在数据库中以便快速访问,但如果消息要移动,则可以更改。message numbers/UID或者在移动/删除/标记电子邮件时是否有更好的功能可以使用更独特的东西来获得?我最初认为 UID 没有改变(导致相信http://www.php.net/manual/en/function.imap-uid.php),但似乎他们确实做到了。

另外,移动消息后是否可以获得新的UID?

4

1 回答 1

1

CP_UID 仅表示 $messageNumber 包含 UID 而不是序列号。我相信,错误消息与移动电子邮件无关。它仅说明您的密码以纯文本形式发送的安全问题。

您不能保留旧的 UID。每个邮箱都有自己的 UID。UID 在邮箱之间不是唯一的(仅在同一个邮箱中)。我相信您也不能为自己分配 UID(肯定不是直接使用 PHP)。

其余的,我和你的情况一样。

我目前正在考虑使用http://www.php.net/manual/en/function.imap-status.php。使用此功能,您可以获得下一个计划的 UID。但是,如果两个人同时在同一个邮箱中移动一封电子邮件,则可能会产生问题。

每当有人从第三方客户端(如 Outlook)移动电子邮件时,我也不知道如何更新数据库。

于 2012-10-23T23:41:36.107 回答