我正在尝试使用带有PHP的imap从电子邮件中获取日期。我收到了来自收件箱的邮件并发送了邮件,然后我将它们合并在一起,但现在我需要按发送日期将它们按顺序排列。
$emailFROM = imap_search($mbox, 'FROM "'.$address.'"', SE_UID);
$emailTO = imap_search($obox, 'TO "'.$address.'"', SE_UID);
$thread = array_merge($emailFROM, $emailTO);
这就是所有消息的数组。输出如下:
Array
(
[0] => 445
[1] => 446
[2] => 450
[3] => 462
[4] => 468
[5] => 110
[6] => 112
[7] => 114
[8] => 167
[9] => 169
[10] => 170
)
不幸的是,电子邮件号码和emailTO号码不对齐(emailFROM是号码445-468,emailTO是110-170)
所以现在我需要浏览每封电子邮件并查找日期,然后我想使用消息ID号作为键将日期推送到数组中
这是我到目前为止所做的:
$emailFROM = imap_search($mbox, 'FROM "'.$address.'"', SE_UID);
$emailTO = imap_search($obox, 'TO "'.$address.'"', SE_UID);
$thread = array_merge($emailFROM, $emailTO);
$full_thread = array();
foreach($thread as $single){
$header = imap_header($mbox, $single);
$date = $header->date;
$full_thread[$from]=$date;
}
//Then I will arrange the array when the array works
print_r($full_thread);
但我相信这不起作用,因为它首先在数组中寻找$from
id?所以,我不确定从哪里开始。
谢谢!
答案 0 :(得分:0)
定义数组键而不是执行盲array_merge()
似乎更为尖锐。通过这种方式,您可以根据数组项的索引访问和更新full_thread
上的索引,例如:
$thread['from'] = $emailFROM;
$thread['to'] = $emailTO;
现在你的foreach循环可以保留对索引的引用。
foreach($thread as $type => $single){
然后,您可以将full_thread
上的数组键定义更改为$type
索引。
$full_thread[$type]['date'] = $date;
不需要额外的['date']
密钥。