我正在尝试在受管服务器上收到电子邮件时执行PHP脚本,而我只能通过cPanel访问。
关注this instructions我能够让脚本运行,但它仍会将电子邮件的内容反弹回发件人。
我尝试按this post的建议读取标准输入,但没有任何改变。添加$emailtext = mailRead();
会读取标准输入,并添加echo $emailtext;
它会在退回的电子邮件中写入电子邮件文本(因此我将文本两次,一个来自echo
,一次来自退回的电子邮件。)
退回是由Mail Delivery System <Mailer-Daemon@sti.stidev.com>
发送的,这里是内容(用粗体斜体表示我更改的部分):
此邮件是由邮件传递软件自动创建的。
您发送的邮件无法发送给其中一个或多个邮件 收件人。这是一个永久性错误。以下地址 失败:
管道到 | / path / to / php / script 由 email@address.com
生成在传递尝试期间生成了以下文本:
------管道到 | / path / to / php / script 由 email@address.com ------
生成X-Powered-By:PHP / 5.2.17内容类型:text / html
此处显示脚本回显的任何输出
------这是邮件的副本,包括所有标题。 ------
回程路径:......
如何摆脱反弹电子邮件?
答案 0 :(得分:3)
在shebang的末尾添加-q
。
以下是最终给我一个工作脚本的步骤:
/n/l
,但仅包含/n
(无Windows
Linux中的新行)#!/usr/bin/php -q
删除shebang末尾的-q
会导致电子邮件退回给发件人。包含php脚本回显的任何文本,它对调试很有用。
第2点和第3点让我浪费时间。我花时间尝试读取stdin并尝试不同的退出值:stdin不需要像解释here那样阅读,脚本不需要exit(0)
或任何{{1}毕竟。
当然这对我有用,可能不适用于不同的配置。但这是我的答案,希望它能帮助别人。