我需要构建一个电子邮件解析脚本,该脚本将解析将进入收件箱并将内容转储到数据库中的电子邮件,同时生成一个卷曲请求,其中包含从电子邮件中解析的详细信息。
此时此刻我仍然坚持实施有关如何在收件箱中收到电子邮件的实时解析部分。有没有办法设置触发器来做这样的事情?我在使用基于php的webmail客户端方面拥有丰富的经验,但这似乎有所不同。
如何实现这一目标 - 我正在做一个cron工作,但如果有另一种方式这样做我就全都听见了。
答案 0 :(得分:6)
是的,有。 您可以将电子邮件发送到您的脚本。
假设您正在使用cPanel,请按照此steps:
进行操作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 . '"');
?>
答案 1 :(得分:5)
如果你想在特定时间做某事,你会使用cron作业。如果您想在电子邮件到达时执行某些操作,则需要将代码绑定到电子邮件系统中。通常的方法是使用Procmail(您可以使用a recipe(只需阅读PHP for Perl / shell)。
答案 2 :(得分:1)
我已经在网站上使用PECL扩展程序mailparse多年了,而且效果很好。
我将特定主机的所有邮件发送到一个php脚本,该脚本使用mailparse来解析邮件并将其插入数据库,以及处理附件或多个收件人。
他们在下载中有一个示例文件try.php,可以让我开始。
根据您拥有的邮件服务器,最简单的方法是将传入的消息传递给您的脚本,如Quentin所说。我使用exim,我所要做的就是为我的域创建一个valiases文件,如下所示:*: "|/home/site/process_mail.php"
从那里mailparse执行大部分艰苦工作,我处理消息并将其添加到数据库