【问题标题】:Email pipe to script works, but still returns bounceback mail到脚本的电子邮件管道有效,但仍返回退回邮件
【发布时间】:2013-09-15 06:30:37
【问题描述】:

这是我用于拦截的 PHP 脚本:

#!/usr/local/bin/php -q
<?php
//Listen to incoming e-mails
$sock = fopen("php://stdin", 'r');
$email = '';

//Read e-mail into buffer
while (!feof($sock))
{
    $email .= fread($sock, 1024);
}

//Close socket
fclose($sock);

emailPoster('email@address.com', "message");

function emailPoster( $to, $email )
{
    $subject = "Email Intercepted";
    $body = $message;
    $headers    = "To: {$to}\r\n";
    $headers    .= "From: noreply@example.com\r\n";
    $headers    .= "Subject: {$subject}\r\n";
    $headers    .= "Reply-To: noreply@example.com\r\n";
    $headers    .= "Return-Path: noreply@example.com\r\n";
    $headers    .= "MIME-Version: 1.0\r\n";
    $headers    .= "Date: " . date("r") . "\r\n";
    $headers    .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    $sender     = '-fnoreply@example.com';
    if (mail($to, $subject, $body, $headers, $sender) ){
        echo("<p>Message successfully sent!</p>");
    } else {
        echo("<p>Message delivery failed...</p>");
    }
}
?>

以及我在 cPanel 中使用的管道命令:

usr/local/bin/php -q /public_html/[mywebsite]/email/intercept.php

当我向适当的地址发送电子邮件时,它会处理 intercept.php 脚本,但也会返回一个退回错误。

有什么想法吗?

【问题讨论】:

    标签: php email pipe


    【解决方案1】:

    如果您通过管道将电子邮件发送到 php 脚本,则不能在脚本中使用“ECHO”或其他输出命令。每个输出命令都会出错。还要从文件末尾删除“?>”。此标记之后的每个字符都会生成一个输出标题并导致错误。

    【讨论】:

    • 标签后面的每个字符?
    • "? >" 在文件末尾。
    • 后面没有字符了。
    • 总是删除? > 从管道 php 文件的末尾开始。也许您的文本编辑器无法显示某些字符,例如 [tab] [br] 或 ... 也不要使用 echo 命令。
    【解决方案2】:

    我将它写入文件而不是 echo 语句。确保目录中的写权限设置正确。

    【讨论】:

      【解决方案3】:

      你总是可以把:

      return NULL;
      

      在您的 PHP 文件末尾停止任何返回消息,这将阻止脚本弹跳。

      【讨论】:

        猜你喜欢
        • 2020-11-24
        • 2020-10-19
        • 1970-01-01
        • 1970-01-01
        • 2016-03-30
        • 1970-01-01
        • 2019-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多