【发布时间】:2018-03-07 18:47:37
【问题描述】:
我目前正在处理一个从 csv 导入的数据数组的项目。处理完该特定行的数据后,它将向为该行指定的电子邮件地址发送一封电子邮件。
我的客户要求他们需要知道电子邮件是否由于在 csv 中输入了错误的电子邮件地址而被退回。
我目前使用PHP 和我们托管的SMTP 中继发送电子邮件,到目前为止,我发现工作的唯一方法是扫描发送电子邮件地址以查找包含主题@987654327 的任何电子邮件@。
这是完美的工作,我得到了所有已退回的电子邮件的列表。我的问题是我需要获取输入错误的电子邮件地址。如果您看到下面的屏幕截图,您可以看到该脚本生成了一个包含电子邮件地址的 HTML 元素/节点。
我的问题是,我如何抓取/调用这个元素?
我已经尝试print_ring 电子邮件对象,不幸的是,我需要的电子邮件地址没有数组索引。
请查看下面的代码,了解我是如何做到这一点的:
<?php
$date = date('y-m-d');
$hostname = '';
$username = '';
$password = '';
$inbox = imap_open($hostname,$username,$password) or die('Cannot
connect to mailbox: ' . imap_last_error());
$emails = imap_search($inbox,'SUBJECT "Undelivered Mail Returned to Sender" ON "'.$date.'"');
if($emails){
rsort($emails);
foreach($emails as $email){
$overview = imap_fetch_overview($inbox,$email,0);
$message = imap_body($inbox, $email);
print_r($overview);
print_r($message);
echo '<br>';
print_r($email);
}
}
感谢您过去的出色帮助和支持。
刘易斯
【问题讨论】:
-
你有代码示例吗?地址必须在某处..
-
添加了关于我如何抓取电子邮件的代码,指定电子邮件地址的唯一位置是在我之前提到的 html 节点中。谢谢
-
我从未使用过
imap_search(),但我看到您使用的是SUBJECT和ON关键字.. 根据php.net/manual/en/function.imap-search.php,有一个TO关键字。也许你可以对查询做一些魔术,也许是一些通配符?对不起,如果我在纠缠而不是帮助,但是$emails包含什么? -
没问题的人,我看看我能不能在上面施展魔法!
$emails是由.imap_search返回的所有电子邮件的数组,$email包含sent_date、sent_to和sent_from等基本信息。在你说sent_to之前听起来像你要求的。不,此处指定的电子邮件地址是包含所有退回电子邮件的电子邮件地址。感谢您的帮助!