【问题标题】:Use PHP to parse a confirmation email?使用 PHP 解析确认邮件?
【发布时间】:2009-12-21 16:21:40
【问题描述】:

我正在将我的网站与第三方系统集成。这是我的网站和第三方系统之间的工作流程:

1) 在我的网站上,我使用 PHP 将 CSV 文件自动上传到第三方系统。

2)第三方系统收到我的文件后,会进行一些操作。

3) 第三方系统将通过电子邮件向 john@mydomain.com 发送成功和失败操作的列表,包括任何错误消息。

4) 我的网站需要在确认邮件中记录成功/失败操作列表。

5) 我的网站根据确认邮件中的成功/失败项目执行操作。

第一个问题: 我需要研究什么才能实施#4?

第二个问题: 解析确认邮件是记录第 3 方系统成功/失败操作的最佳方式吗?感觉进入第 5 步的方式有问题(例如,如果电子邮件中的语言发生变化怎么办?那我必须重写解析器”。

【问题讨论】:

    标签: php email parsing


    【解决方案1】:

    好吧,显然更好的方法是从第 3 方系统到您端的脚本,遵循定义的参数约定。 如果有机会这样做,请与第三者讨论这种方式是否无法以某种方式实施。他们的工作可能很少。

    解析电子邮件: PHP中检查POP3和IMAP邮箱的标准方法是here

    解析电子邮件本身所需的内容取决于它们的外观。可能会涉及到正则表达式。

    【讨论】:

    【解决方案2】:

    我已经完成了与此类似的设置。设置邮箱以接收来自另一个系统的输出肯定不是最失败的设置,但有时没有其他选择。

    Zend_Mail 让这一切变得轻而易举。我检查邮件收件箱的整个脚本只有几行:

        $mail = new Zend_Mail_Storage_Imap(array(
            'host' => $config->reports->email->incoming,
            'user' => $config->reports->email->address,
            'password' => $config->reports->email->password
        ));
    
        foreach ($mail as $message) {
            $message->getContent(); // Do something with the message content
            if ($message->isMultipart()) {
                $part = $message->getPart(2); // Deal with attachment, 
                                              // if your output is an  
                                              // attachment
                if ($part->contentTransferEncoding=='base64') {
                    $raw = base64_decode($part->getContent());
                    // Do something with the attachment data
                }
            }
        }
    

    由于您正在解析 HTML,因此将其传递给 DOM 解析器将是下一个合乎逻辑的步骤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 2013-12-30
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 2014-07-18
      • 2018-01-26
      相关资源
      最近更新 更多