我需要构建一个电子邮件解析脚本,该脚本将解析进入收件箱的电子邮件并将内容转储到数据库中,同时发出一个 curl 请求,其中包含从电子邮件中解析的详细信息。
目前,我非常坚持实施有关如何在收件箱中收到电子邮件时实时解析电子邮件的部分。有没有办法设置触发器来做这样的事情?我在使用基于 php 的 webmail 客户端方面拥有丰富的经验,但这似乎有所不同。
如何做到这一点 - 我正在承担一项 cron 工作,但如果有其他方法可以做到这一点,我会全神贯注。
我需要构建一个电子邮件解析脚本,该脚本将解析进入收件箱的电子邮件并将内容转储到数据库中,同时发出一个 curl 请求,其中包含从电子邮件中解析的详细信息。
目前,我非常坚持实施有关如何在收件箱中收到电子邮件时实时解析电子邮件的部分。有没有办法设置触发器来做这样的事情?我在使用基于 php 的 webmail 客户端方面拥有丰富的经验,但这似乎有所不同。
如何做到这一点 - 我正在承担一项 cron 工作,但如果有其他方法可以做到这一点,我会全神贯注。
就在这里。您可以通过管道将电子邮件发送到您的脚本。
假设您使用的是 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 . '"');
?>
如果您想在特定时间做某事,您将使用 cron 作业。如果您想在收到电子邮件时执行某些操作,则需要将代码绑定到电子邮件系统中。执行此操作的常用方法是使用Procmail(您可以使用一个配方(只需阅读 PHP for Perl/shell))。
多年来,我一直在网站上使用 PECL 扩展邮件解析,它一直很棒。
我将特定主机的所有邮件通过管道传输到使用 mailparse 解析消息并将其插入数据库的 php 脚本,以及处理附件或多个收件人。
他们在下载中有一个示例文件 try.php 可以让我开始。
根据您拥有的邮件服务器,最简单的方法是将传入的消息通过管道传输到您的脚本,就像 Quentin 所说的那样。我使用 exim,我所要做的就是为我的域创建一个看起来像这样的 valiases 文件:*: "|/home/site/process_mail.php"
然后 mailparse 从那里完成大部分艰苦的工作,我处理消息并将其添加到数据库中。