可以在发送电子邮件时运行PHP应用程序吗?

时间:2009-12-11 03:53:59

标签: php smtp triggers discovery

有没有办法在收到电子邮件时配置服务器或脚本来执行php脚本?

理论上,这可以扩展到其他协议,例如XMPP或SMS等。

我想到的是用户可以向checking-in@example.org发送消息,这会触发一个脚本,然后执行任何需要完成的操作,与消息无关(每当发送一条自动消息)其他一些甚至发生,如服务器有问题)或与消息相关(就像它可以将主题存储在数据库中,其他用户可以将其视为RSS提要)。

我知道大多数列表服务软件都有发送命令的方法(比如取消订阅),但我不确定这个过程有多复杂,如果在服务器脚本级别上有这样的东西是可行的。

这是否需要在IMAP / SMTP级别进行,还是可以在脚本或HTTP服务器附近进行?

为了给出一些上下文,我正在考虑的事情之一就是我的一个工作站点的服务器中基于消息的时钟。用户可以IM /电子邮件/文本他们在他们的预定位置,这可能会触发更新数据库的脚本,而不是向管理员发送他们需要记录的直接消息。这只是一个选项(基于Web的方法已经在进行中),但我们希望尽可能使其与平台/协议无关。但是,如果我们能够做到这一点,我们可以考虑实施它以满足其他许多日常需求。

另一种提问方式可能是:是否有办法从服务器脚本应用程序中“发现”用户,或者是否需要对相关来源进行持续检查以查看此类更改?

3 个答案:

答案 0 :(得分:3)

使用cron作业通过pop3界面检查电子邮件。如果找到“有趣”的邮件,请运行您的php脚本。

请注意,cron脚本也可以在PHP中使用。

答案 1 :(得分:3)

如果您控制自己的计算机,则可以将其配置为通过筛选器管道电子邮件。最简单的方法是设置一个新帐户并设置.forward或别名

以下示例适用于Sendmail,但(所有?)Unix电子邮件程序提供类似的服务。

设置别名(选项1)

在服务器上的/ etc目录中查找别名文件。添加以下行:

脚本:“| /path/toyourscript/pipe.php”

使用.forward文件(选项2)

在主目录中创建.forward文件。

“| /path/toyourscript/pipe.php”

或:

myemail@example.com, “| /path/toyourscript/pipe.php”

如果您在共享主机上,那么大多数主机提供商还提供通过脚本“管道”收到特定帐户的电子邮件的可能性,而不是将其存储在邮箱中。检查CPanel设置。

答案 2 :(得分:1)

正如jldupont所说,用PHP本身很容易做到,简单地用cronjob连续读取smtp。

否则,您可以在python中使用daemon,例如。

两种方式都可以让你做一件重要的事情:检查电子邮件的发件人是否是你的用户(你有一个数据库中的用户,对吗?),还是一个spambot(无论你使用什么样的反垃圾邮件) ,很快或以后,checking-in@example.org将充满垃圾邮件)