【问题标题】:Parse email sent to an address with PHP?使用 PHP 解析发送到地址的电子邮件?
【发布时间】:2020-03-21 19:44:04
【问题描述】:

多年来,我一直作为一个业余项目想要构建一个不错的小型 PHP 库,该库可以允许发送到预定义电子邮件地址的电子邮件然后用 PHP 解析并保存到 MySQL 数据库中。

许多支持票和帮助台都具有此功能。您可以向一个地址发送电子邮件,并根据电子邮件地址和内容为用户创建支持票证。回复电子邮件也会从发送的电子邮件中向系统添加工单回复。

这整个概念一直让我着迷,有一次我做了足够多的研究,完全知道如何去做。不过现在已经好几年了,我不确定实现这一目标的最佳途径,我正在寻找有关如何做到这一点的信息。

我想构建某种 SugarCRM 插件,使用此功能能够将来自我的客户的电子邮件分配到我的 CRM 中的帐户和联系人记录。

我今晚的初步搜索在这里找到了这个项目 PHP Mime Mail Parser https://code.google.com/p/php-mime-mail-parser/ 它指出:“您需要先将电子邮件下载到文件中,然后将其传递给 MimeMailParser。”因此,这可能有助于找到一个程序或方法也能做到这一点……将电子邮件保存到我可以使用 PHP 访问的文件中,然后删除它们。我只是不确定这是否是这样做的最佳和标准途径?

这个库看起来一样,但在 Github 上,最近在(最近到这个问题的发布日期是)https://github.com/eXorus/php-mime-mail-parser

1) 是否有一些特殊的电子邮件软件可以在服务器上运行以简化此过程?

2) 我怎样才能做到这一点?我不是在寻找如何阅读电子邮件并解析电子邮件内容中的 ID 和其他数据......我只需要帮助将电子邮件内容传递给我的 PHP 脚本!

当然,如果存在一些我可以研究或什至可以使用的开源库来执行此功能,那也很棒,但我还没有意识到。

期待有关该主题的一些信息吗?

这是一个与How do I parse emails in realtime as they are received 类似的问题,但是该问题的答案解释了仅当您使用我不是的 CPanel 时如何将电子邮件通过管道/转发到 PHP 脚本!这是我需要的操作,无需 CPanel 的帮助。

【问题讨论】:

  • 我不确定他们是否是一个更简单的解决方案。我们在邮件服务器上使用 powerMTA,它允许我们通过 php 脚本处理入站电子邮件。然后我们使用 php pear 库 Mail_mimeDecode 将实际的电子邮件解析为我们可以访问的电子邮件对象,例如 $mail->body 等。
  • 安装许多已经这样做的开源滴答系统之一?
  • @showdev 我需要该问题的相同结果,但是它的答案解释了仅当您在服务器上使用 CPanel 而我不是时如何做到这一点。
  • @Dagon 票务系统不是我想要的结果。我想学习如何将其实施到我自己的几个项目中。

标签: php email parsing


【解决方案1】:

大多数 MTA 都能够将传入的邮件通过管道传输到脚本。然后你在How do I parse emails in realtime as they are recieved 中引用的类似 on 的脚本可以在到达时处理传入的消息。

就 MTA 而言,qmail (http://cr.yp.to/qmail.html) 是一种更易于设置和管理的 MTA。如果您决定使用 qmail,我会推荐网站 lifewithqmail.org 以获得有关如何安装和设置它的出色指南。安装并运行 qmail 后,请执行以下操作来配置传入的消息以通过管道传输到您的 PHP 脚本:

在 /var/qmail/control/rcphosts 中添加一行,告诉 qmail 它应该充当您域的 MX。

在 /var/qmail/control/virtualdomains 中,添加这样的一行,告诉 qmail 将邮件路由到该域的哪个用户帐户:domain.tld:username

在用户目录中创建一个 .qmail-default 文件,其中包含指向要将邮件路由到的脚本的管道:| /path/to/脚本

重启qmail。

您需要为脚本上的所有人授予执行权限。

此时,每个传入的消息都应该通过 qmail 管道传输到 PHP 脚本。

【讨论】:

  • 听起来是个不错的简单解决方案!问题,我的服务器目前没有邮件服务器设置。 Qmail 可以用于常规电子邮件以及此管道到 php 脚本项目吗?或者你会说我应该为我的日常常规电子邮件使用另一个邮件服务器?谢谢!
  • 您可以将 qmail 用于这两个目的。如果您还需要从服务器发送外发邮件,您也可以使用 qmail。
  • 您可能要考虑的另一个选项 - 有许多第三方服务将接收传入的电子邮件消息,解析它们,并通过 https 将消息的信息和内容发布到 URL。请参阅mailgun.com/inbound-routingsendgrid.com/blog/…
  • 好主意,我忘记了服务。我更喜欢自我托管,但我也会检查一下,谢谢!
【解决方案2】:

我正在使用 Parseur.com 接收传入的电子邮件消息,对其进行解析,然后通过 http (json) 将消息的信息和内容发布到 URL。我的 PHP 脚本提取所需的数据,例如发件人、主题,并将附件保存到我的服务器。免费计划每月最多处理 20 条消息。

我的安排是将发送到公共地址(例如 message@myDomain.com)的电子邮件转发到 myInbox@parseur.com,然后服务解析邮件,并将我想要的数据发送到我的脚本。

【讨论】:

    猜你喜欢
    • 2011-11-27
    • 2011-05-14
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2014-07-20
    • 1970-01-01
    相关资源
    最近更新 更多