3

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

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

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

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

这需要在 IMAP/SMTP 级别发生,还是可以在更接近脚本或 HTTP 服务器的地方完成?

只是为了提供一些背景信息,我正在考虑的一件事是我的一个工作站点的服务器中基于消息的时钟。用户可以通过 IM/电子邮件/文本告知他们在预定位置,这可能会触发更新数据库的脚本,而不是向经理发送他们需要记录的直接消息。这只是一种选择(基于 Web 的方法已经在开发中),但我们希望使其尽可能独立于平台/协议。但是,如果我们能够实现这一目标,我们可以考虑为许多其他日常需求实施它。

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

4

3 回答 3

3

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

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

于 2009-12-11T03:58:53.057 回答
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 设置。

于 2009-12-11T04:17:22.313 回答
1

正如 jldupont 所说,使用 php 本身很容易,只需使用 cronjob 连续读取 smtp。

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

这两种方法都允许您做一件重要的事情:检查电子邮件的发件人是您的用户(您的用户在数据库中,对吗?),还是垃圾邮件机器人(无论您使用哪种反垃圾邮件,很快或稍后,check-in@example.org 将充满垃圾邮件)

于 2009-12-11T06:25:08.427 回答