使用PHP解析确认电子邮件?

时间:2009-12-21 16:21:40

标签: php email parsing

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

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

嗯,显然更好的方法是按照定义的参数约定,从第三方系统推送到您最终的脚本。 如果有机会这样做,请与第三方联系,不知道这种方式是否无法实现。他们的工作可能很少。

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

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

答案 1 :(得分:1)

我对此做了类似的设置。设置邮箱以接收来自另一个系统的输出肯定不是最防错的设置,但有时没有其他选项。

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解析器将是下一个合乎逻辑的步骤。