我正在尝试使用procmail向PHP脚本发送电子邮件,这样脚本将检查MySQL数据库,并根据发件人的电子邮件编辑主题行。我相信我已经有了一个可以做到这一点的工作流程:
:0:
* ^To:.*@barrett.com
! '/usr/local/bin/php-5.2 -f $HOME/ticket/emailcustcheck.php'但是,我不确定procmail是如何执行该命令的。如何将电子邮件传递给PHP脚本,因此,我如何在脚本中引用它?
发布于 2012-12-10 17:26:45
通过管道连接到脚本的正确语法是
:0 # no lock file
* ^To:.*@barrett\.com
| /usr/local/bin/php-5.2 -f $HOME/ticket/emailcustcheck.php # no quotes, use pipe!操作将尝试转发到电子邮件地址,但当然,带有PHP解释器路径的长引号字符串不是有效的电子邮件地址。
如果需要锁定(即不允许同时运行此PHP脚本的两个实例),则需要命名一个锁定文件;Procmail在此处无法推断锁定文件的名称,因此您的锁定操作只会产生一条错误消息。如果您不确定,添加一个命名的锁文件是更安全的选择,但是如果您没有并发问题(例如,脚本需要写入数据库,而没有其他进程正在使用该数据库),则不应该这样做,并且可能会降低处理速度。
正则表达式的条件看起来也有些不精确,但我只能推测您可能希望在Cc邮件和直接To:上触发。如果是,请在文档中查找^TO_宏。
该脚本将消息作为其标准输入;它可能会将所有输入行读取到一个数组中,或者拆分成两个数组,以便第一个空行之前的所有内容都放入"headers“数组,其余的放入"body”数组。或者PHP有一些类可以从标准输入中将电子邮件消息读取到对象中。
发布于 2013-06-05 22:24:06
:0 wf
* ^To:.*@barrett\.com
| /usr/local/bin/php-5.2 -f $HOME/ticket/emailcustcheck.phpf告诉procmail你要过滤邮件,也就是更改它。w等待筛选器或程序完成并检查其退出代码。
如果只想处理消息的正文,则必须添加标志b如果只想处理消息的头部,则必须添加标志h
https://stackoverflow.com/questions/13752809
复制相似问题