我正在使用 PHP Imap 库将邮件从一个 imap 服务器复制到另一个。见http://www.php.net/manual/en/ref.imap.php
我的脚本工作正常,除了邮件日期有问题。
如果我在 MS Outlook 中连接到新的 imap 帐户,日期是正确的,但如果我用我的 iPhone 连接到同一个帐户,电子邮件日期将显示为今天的日期(复制过程的日期)
所以我的问题是:iPhone 如何从电子邮件标头中检测电子邮件日期,以及在使用 imap_append 时如何使标头正确?
我正在使用 PHP Imap 库将邮件从一个 imap 服务器复制到另一个。见http://www.php.net/manual/en/ref.imap.php
我的脚本工作正常,除了邮件日期有问题。
如果我在 MS Outlook 中连接到新的 imap 帐户,日期是正确的,但如果我用我的 iPhone 连接到同一个帐户,电子邮件日期将显示为今天的日期(复制过程的日期)
所以我的问题是:iPhone 如何从电子邮件标头中检测电子邮件日期,以及在使用 imap_append 时如何使标头正确?
它可能正在使用 IMAP 服务器INTERNALDATE字段,该字段在服务器上创建消息时由服务器维护。
RFC 指出,对于APPEND命令:
If a date-time is specified, the internal date SHOULD be set in
the resulting message; otherwise, the internal date of the
resulting message is set to the current date and time by default.
你有一个接口来提供一个时间戳来追加吗?
编辑:
是的,可以使用 imap_headerinfo:
$headerinfo = imap_headerinfo($source_imap, $message_number);
$internal_date=date('dMY H:i:s O',$headerinfo->udate);
imap_append ( $imap_stream , $mailbox , $message , $options , $internal_date);
我已经测试了您的解决方案并且它有效,iPhone 上的日期现在是正确的。