从标题中提取电子邮件

时间:2014-11-18 02:50:42

标签: php imap imap-open

似乎无法使我的代码正常工作。警告:preg_match_all()期望参数2是字符串,在第23行的/script.php中给出数组。我希望检索电子邮件地址列表:

<?php
$mbox = imap_open("{******.com:143/notls}", "******@******.com", "******");

echo "<h1>Email Addresses</h1>\n";
$headers = imap_headers($mbox);

if ($headers == false) {
echo "Call failed<br />\n";
} else {
foreach ($headers as $val) {
preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $headers, $matches);
echo $maches[2] . "<br />\n";
}
}

imap_close($mbox);
?>

1 个答案:

答案 0 :(得分:0)

preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $headers, $matches);

应该是

preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $val, $matches);

您正在循环遍历数组,但是每个循环都将整个数组送入preg_match_all函数。

另外,你有一个错字:

echo $maches[2] . "<br />\n";

应该是

echo $matches[2] . "<br />\n";