【问题标题】:Email forward to PHP script always bounces转发到 PHP 脚本的电子邮件总是被退回
【发布时间】:2013-12-09 17:57:03
【问题描述】:

我正在尝试在托管服务器上收到电子邮件时执行 PHP 脚本,并且我只能通过 cPanel 访问。

this instructions 之后,我能够让脚本工作,但它仍然会将电子邮件的内容退回给发件人。

我尝试按照this post 的建议阅读标准输入,但没有任何改变。添加$emailtext = mailRead(); 会读取标准输入,添加echo $emailtext; 会将电子邮件文本写入退回的电子邮件中(所以我收到两次文本,一次来自我的echo,一次在退回的电子邮件末尾。)

退回邮件由Mail Delivery System <Mailer-Daemon@sti.stidev.com>发送,内容如下(我改过的部分加粗斜体):

此消息是由邮件传递软件自动创建的。

您发送的消息无法传递给它的一个或多个 收件人。这是一个永久性错误。以下地址 失败:

管道到|/path/to/php/scriptemail@address.com

生成

在交付尝试期间生成了以下文本:

------ 管道到 |/path/to/php/scriptemail@address.com 生成 ------

X-Powered-By:PHP/5.2.17 内容类型:text/html

这里可以看到脚本回显的任何输出

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

返回路径:...

如何摆脱退回邮件?

【问题讨论】:

  • 您通过管道传递的脚本是否具有在服务器上执行 (755) 的正确权限?你也可以分享完整的转储,也许有语法错误或路径不正确。如果没有更多日志详细信息,就很难确定问题出在哪里。
  • 脚本运行良好。如果它创建一个文本文件,则创建该文件;如果它回显了某些文本,则该文本会出现在反弹中。我试图用exit(0)exit(1)exitexit("some text") 结束它并且没有退出调用。文本出现在弹跳中,数字不出现。
  • 它有正确的权限吗?就像我已经说过的那样,如果没有完整的日志转储,则发布的代码中没有太多表明该问题的内容。几个月前我也遇到过同样的问题,而且是严格基于许可的。你看过stackoverflow.com/questions/14757430/…吗??

标签: php email cpanel


【解决方案1】:

在 shebang 末尾添加 -q

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

  1. 在 cPanel 中为脚本文件创建电子邮件转发器
  2. 确保 脚本文件不包含/n/l,而只有/n(没有Windows Linux 中的新行)
  3. 确保脚本以 正确的shebang:#!/usr/bin/php -q
  4. 将脚本权限设置为 可执行文件

删除 shebang 末尾的 -q 会导致电子邮件退回给发件人。包含由 php 脚本回显的任何文本,这对于调试很有用。

第 2 点和第 3 点让我浪费了很多时间。我还花时间尝试读取标准输入并尝试不同的退出值:不需要按照here 的说明读取标准输入,脚本根本不需要exit(0) 或任何exit

当然这对我有用,并且可能不适用于不同的配置。但这是我的回答,希望对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 2020-11-24
    • 1970-01-01
    • 2011-05-29
    • 2013-06-02
    • 2016-03-30
    • 1970-01-01
    • 2020-01-14
    • 2011-09-16
    • 2013-11-01
    相关资源
    最近更新 更多