电子邮件转发到PHP脚本总是反弹

时间:2013-12-09 17:57:03

标签: php email cpanel

我正在尝试在受管服务器上收到电子邮件时执行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

     

此处显示脚本回显的任何输出

     

------这是邮件的副本,包括所有标题。 ------

     

回程路径:......

如何摆脱反弹电子邮件?

1 个答案:

答案 0 :(得分:3)

在shebang的末尾添加-q

以下是最终给我一个工作脚本的步骤:

  1. 在cPanel中创建一个脚本文件的电子邮件转发器
  2. 确保 脚本文件不包含/n/l,但仅包含/n(无Windows Linux中的新行)
  3. 确保脚本以 正确的shebang:#!/usr/bin/php -q
  4. 将脚本权限设置为 可执行
  5. 删除shebang末尾的-q会导致电子邮件退回给发件人。包含php脚本回显的任何文本,它对调试很有用。

    第2点和第3点让我浪费时间。我花时间尝试读取stdin并尝试不同的退出值:stdin不需要像解释here那样阅读,脚本不需要exit(0)或任何{{1}毕竟。

    当然这对我有用,可能不适用于不同的配置。但这是我的答案,希望它能帮助别人。