我不确定如何调试它,函数imap_msgno()
返回0而不是消息号而没有任何错误。这是代码中的一部分(包括调试信息):
// Retrieve and order emails
$search = imap_search($this->open, 'SINCE "' . $date . '"');
$sorted_search = $this->order_search($search, $sorted);
// Store all the messages
$Messages = array();
foreach($sorted_search as $msgUID) {
$msgNo = imap_msgno ($this->open, $msgUID);
$header = imap_header($this->open, $msgNo);
var_dump($msgUID);
var_dump($msgNo);
if (empty($header->message_id)) {
var_dump($header);
}
else {
echo "Good";
}
echo " | ";
// mode code ...
}
这应该返回许多int (12) int (10) Good | int (11) int (9) Good | ...
。但是,情况并非如此,它会返回此信息(为了清晰起见,添加了回报):
int(12) int(10) Good |
int(11) int(9) Good |
int(10) int(0) bool(false) |
int(9) int(0) bool(false) |
int(8) int(8) Good |
...
如您所见,$msgNo
似乎是正确的。 function imap_msgno() in the documentation没有提供有关无效$msgNo
行为的任何更多信息,因为它应该是有效的$msgNo
,因此它是返回的{{1}的一部分。 }}。知道如何调试这个或哪里出错了?
答案 0 :(得分:0)
除非在order_search调用中设置它们,否则您将返回消息编号而不是唯一ID。如果在imap_search调用中设置选项SE_UID,例如
$search = imap_search($this->open, 'SINCE "' . $date . '"', SE_UID);
你应该得到独特的ID。