【问题标题】:IMAP - difference between msgno and uid?IMAP - msgno 和 uid 之间的区别?
【发布时间】:2014-03-31 02:20:44
【问题描述】:

msgno 和 uid 有什么区别?即使删除了消息,它们似乎总是一样的!?

【问题讨论】:

    标签: php imap


    【解决方案1】:

    正如http://www.php.net/manual/en/function.imap-uid.php 所说:

    此函数返回给定消息序列号的 UID。 UID 是一个不会随时间变化的唯一标识符,而邮件序列号可能会随着邮箱内容的变化而变化。

    【讨论】:

    • 当我删除 msgs 时,uid 会发生变化,并且在使用 imap_fetch_overview() 检索数据时始终与 msgno 相同
    • 您是否尝试过删除邮件并在同一会话中重新获取?
    【解决方案2】:

    就我而言,uid 始终与 msgno 和 message_id 相同

    最糟糕的是,当我在邮件服务器上删除邮件时,msgno 和 UID 按到达顺序重新归因

    我制作了一个小脚本,它使用 imap_search 和 imap_overview 获取邮件以获取标题,我使用 imap_uid($this->GetConnection(),$msgno);强制从 MSGNO 获取 UID,结果如下:

    echo "MSGNO : $msgno UID : $overview->uid UIDBYNO : "。 $mbox->GetUidByNum($msgno)."
    ";

    MSGNO:851 UID:851 UIDBYNO:851 MSGNO:852 UID:852 UIDBYNO:852 MSGNO:853 UID:853 UIDBYNO:853 MSGNO:854 UID:854 UIDBYNO:854 MSGNO:855 UID:855 UIDBYNO:855 MSGNO:856 UID:856 UIDBYNO:856 MSGNO : 857 UID : 857 UIDBYNO : 857

    所以 1) uid 不是唯一的 2) msg​​no 总是和 uid 一样

    也许邮件服务器不遵守 RFC!

    【讨论】:

    • 也许你最好在没有客户端库的情况下进行测试,以确保服务器有问题,而不是客户端库。 Telnet 到服务器的 143 端口,然后说“a login maypeur foo”(即登录名和密码)、“b select inbox”和“c fetch 1:* uid”。
    • 如果使用 php imap 连接到 POP3 服务器将无法正常工作,因为 POP3 显然不使用/支持正确的 UID。反正这是我的问题
    • 尝试将电子邮件从一个邮箱移动到另一个邮箱,然后数字会改变。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2020-05-10
    • 2014-09-20
    • 2010-10-28
    • 2015-10-04
    • 2012-08-12
    • 2011-02-18
    相关资源
    最近更新 更多