【问题标题】:Capture Bounced Email Addresses via PHP通过 PHP 捕获退回的电子邮件地址
【发布时间】: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(),但我看到您使用的是SUBJECTON 关键字.. 根据php.net/manual/en/function.imap-search.php,有一个TO 关键字。也许你可以对查询做一些魔术,也许是一些通配符?对不起,如果我在纠缠而不是帮助,但是$emails 包含什么?
  • 没问题的人,我看看我能不能在上面施展魔法! $emails 是由.imap_search 返回的所有电子邮件的数组,$email 包含sent_datesent_tosent_from 等基本信息。在你说sent_to 之前听起来像你要求的。不,此处指定的电子邮件地址是包含所有退回电子邮件的电子邮件地址。感谢您的帮助!

标签: php email smtp


【解决方案1】:

David 和 Kyrre 设法为我指明了正确的方向,经过更多研究后,在对如何获取 Final-Recipient i能够抓住我需要的东西。

为此,我按照此 SA 线程中的讨论执行了以下操作:Regular expression to parse Final-Recipient email header

    $message = imap_body($inbox, $email);
    $pattern = '/Final-Recipient: rfc822; (.*)/';
    $matches = Array();
    preg_match($pattern, $message, $matches);
    $email = $matches[1];

【讨论】:

    【解决方案2】:

    正如@Kyrre 提到的 imap_search() 字符串,假设它是一个 SQL 查询。收到退回的电子邮件已回复here。还有thissweet walk through 可以返回整个邮件内容。

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 2011-12-14
      • 1970-01-01
      • 2011-02-09
      • 2014-01-26
      • 2015-12-07
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      相关资源
      最近更新 更多