【问题标题】:How do I parse emails in realtime as they are recieved如何在收到电子邮件时实时解析它们
【发布时间】:2011-11-24 08:55:26
【问题描述】:

我需要构建一个电子邮件解析脚本,该脚本将解析进入收件箱的电子邮件并将内容转储到数据库中,同时使用从电子邮件中解析的详细信息发出 curl 请求。

目前,我一直在实施有关如何在收件箱中收到电子邮件时实时解析电子邮件的部分。有没有办法设置触发器来做这样的事情?我在使用基于 php 的 webmail 客户端方面拥有丰富的经验,但这似乎有所不同。

如何做到这一点 - 我假设一个 cron 工作,但如果有其他方法可以做到这一点,我会全力以赴。

【问题讨论】:

    标签: php email real-time email-parsing


    【解决方案1】:

    是的,有。 您可以通过管道将电子邮件发送到您的脚本。

    假设您使用的是 cPanel,请关注此steps

    • 登录您的 cPanel。
    • 点击Forwarders 图标,在Mail 标签下。
    • 点击Add Forwarder按钮。
    • 填写Address to Forward并输入你想要的邮件地址 从管道传输消息。
    • 选择Pipe to a Program并填写脚本的完整路径 它将处理消息。

    这是一个邮件捕获器示例,它将收到的电子邮件发送到您的其他邮件(仅用于演示):

    #!/usr/bin/php -q
    <?php
     
    // read from stdin
    $fd = fopen("php://stdin", "r");
    $email = "";
    while (!feof($fd))
    {
        $email .= fread($fd, 1024);
    }
    fclose($fd);
     
     
    mail('you@yoursite.com','From my email pipe!','"' . $email . '"');
     
    ?>
    

    【讨论】:

    • 哇,我从来不知道您可以将电子邮件直接发送到脚本 - 感谢您的帮助,我会试一试。
    【解决方案2】:

    多年来,我一直在网站上使用 PECL 扩展 mailparse,效果非常好。

    我将特定主机的所有邮件通过管道传送到一个 php 脚本,该脚本使用 mailparse 解析邮件并将其插入数据库,以及处理附件或多个收件人。

    他们在下载中有一个示例文件 try.php 可以让我开始。

    根据您拥有的邮件服务器,最简单的方法是像 Quentin 所说的那样将传入的消息通过管道传输到您的脚本。我使用 exim,我所要做的就是为我的域创建一个 valiases 文件,如下所示:*: "|/home/site/process_mail.php" 然后 mailparse 从那里完成大部分艰苦的工作,我处理消息并将其添加到数据库中。

    【讨论】:

      【解决方案3】:

      如果您想在特定时间做某事,您会使用 cron 作业。如果您想在收到电子邮件时执行某些操作,则需要将代码绑定到您的电子邮件系统中。通常的方法是使用Procmail(您可以使用a recipe(只需阅读PHP for Perl/shell))。

      【讨论】:

        猜你喜欢
        • 2019-11-23
        • 2011-05-30
        • 2016-04-30
        • 2020-10-25
        • 2021-07-22
        • 1970-01-01
        • 1970-01-01
        • 2019-11-21
        • 2011-10-23
        相关资源
        最近更新 更多