【问题标题】:cPanel pipe mail to PHP scriptcPanel 管道邮件到 PHP 脚本
【发布时间】:2011-08-05 03:09:41
【问题描述】:

我花了几个小时,但我终于想出了如何使用 cPanel X3 将邮件发送到我的 PHP 脚本。

实际的解析脚本只是我设置的一个测试脚本,它在执行时会通过电子邮件发送给我。

#!/usr/local/bin/php -q
<?php
$headers = "From: test@email.com";
$to = "myemail@gmail.com";
$subject = "Recieved";
$body = "Message recieved.";
$mail = mail($to, $subject, $body, $headers);

上述脚本正确执行并接收数据,即使它正在接收邮件,它也会发回以下内容:

This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

 pipe to |/home/PATH/TO/SCRIPT/parse.php
   generated by test@email.com

The following text was generated during the delivery attempt:

------ pipe to |/home/PATH/TO/SCRIPT/parse.ph
  generated by test@email.com ------

PHP Warning:  Module 'PDO' already loaded in Unknown on line 0
PHP Warning:  Module 'pdo_sqlite' already loaded in Unknown on line 0
PHP Warning:  Module 'SQLite' already loaded in Unknown on line 0
PHP Warning:  Module 'pdo_mysql' already loaded in Unknown on line 0

------ This is a copy of the message, including all the headers. ------

Return-path: <myemail@gmail.com>
Received: from mail-fx0-f44.google.com ([209.85.161.44])
       by my.server.com with esmtps (TLSv1:RC4-SHA:128)
       (Exim 4.69)
       (envelope-from <myemail@gmail.com>)
       id 1QpAdr-0008UY-MO
       for test@email.com; Thu, 04 Aug 2011 22:00:07 -0500
Received: by fxe6 with SMTP id 6so2641925fxe.3
       for <test@email.com>; Thu, 04 Aug 2011 20:00:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
       d=gmail.com; s=gamma;
       h=mime-version:from:date:message-id:subject:to:content-type;
       bh=gqxzpu6OEZTUs6uTT1G+NLaRvZh0HIOfcrOh1KtUuqw=;
       b=ICOQ1YpNQZKXxAB5DCguFui6aCSqg9wMDaj8S+1iuNkJQhGL8otqT8zRdRU8i+dngU
        +KjDbSPNLdt52PGLqbz4v48MKWUCeaTo/xwa4Pftix6d63x6yqwU4/Hy9ZG9dhNiVHYM
        goSQb+InqzTgw3msyWMsw75Mddwh/HK4I8fv0=
Received: by 10.204.151.216 with SMTP id d24mr532167bkw.304.1312513204131;
 Thu, 04 Aug 2011 20:00:04 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.204.23.196 with HTTP; Thu, 4 Aug 2011 19:59:44 -0700 (PDT)
From: myemail@gmail.com
Date: Thu, 4 Aug 2011 22:59:44 -0400
Message-ID: <CAHxz2PpNoNWRakeP2JoN8cdmPfz=HrYd5N2vZ4aqb9E_vLiUjw@mail.gmail.com>
Subject: Hahahahha
To: test@email.com
Content-Type: multipart/alternative; boundary=0015175dd9cc4b987d04a9b94b71

--0015175dd9cc4b987d04a9b94b71
Content-Type: text/plain; charset=ISO-8859-1

awda asd asdqwd a xzccz

--0015175dd9cc4b987d04a9b94b71
Content-Type: text/html; charset=ISO-8859-1

awda asd asdqwd a xzccz

--0015175dd9cc4b987d04a9b94b71--    

这是我在 cPanel 中使用的路径:

|php -q -n /PATH/TO/SCRIPT/parse.php

如果正在执行脚本,为什么我仍然从我的服务器收到该错误?

编辑:我弄清楚了问题所在。我的 php.ini 文件没有正确设置。以下是重复的:

extension=pdo.so
extension=pdo_sqlite.so
extension=sqlite.so
extension=pdo_mysql.so

【问题讨论】:

    标签: php email pipe cpanel forward


    【解决方案1】:

    “错误邮件”的原因是 MTA 认为如果执行的程序在 stdoutstderr 上写了一些东西(我不舒尔) - 这就是 php 在执行时所做的正在发出警告。

    您可以尝试通过设置 error_reporting 来抑制这些警告:

    |php -n -d error_reporting=E_ERROR /PATH/TO/SCRIPT/parse.php
    

    如果这不起作用,请尝试消除所有输出:

    |php -d display_errors=off -d display_startup_errors=off -d error_log=/dev/null -n /PATH/TO/SCRIPT/parse.php
    

    但是这样你就不会看到任何错误,比如可能不需要的语法错误。

    【讨论】:

    • 这些都不起作用,它们破坏了我仅有|php -q -n /PATH/TO/SCRIPT/parse.php的小功能
    • @Vitaliy Isikov:你这是什么意思?有错误信息吗?您还可以尝试创建一个调用 PHP 脚本并将 stderr 和 stdout 路由到 /dev/null 的 shell 脚本。
    【解决方案2】:

    我看到的唯一问题是$headers = "From: test@email.com"; 应该是$headers = "From: test@email.com\r\n";

    【讨论】:

    • 只有在有多个标题时才需要 \r\n,例如From: test@test.com\r\n Reply-To: other@test.com
    【解决方案3】:

    上面的脚本正确执行并接收数据,即使它正在接收邮件

    ?您显示的脚本不接收它只发送它们的电子邮件。

    为什么我仍然收到这个错误

    哪个错误?由于配置错误导致 PHP 错误 - 但这些并不会阻止脚本运行。这些可能会根据 MDA 生成反向散射。还有无法投递的消息 - 这是您的 Exim 配置的问题。

    您的接收脚本也会在读取 STDIN 管道之前退出并关闭它。真的,您应该阅读 EOF 并以显式返回码退出(0 表示成功)

    【讨论】:

    • 那里的脚本只是一个测试设置,看看它是否真正执行。它根本不应该解析收到的邮件,如果收到邮件就发邮件给我。
    猜你喜欢
    • 2011-04-02
    • 2020-10-19
    • 2012-08-29
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    相关资源
    最近更新 更多