【问题标题】:sendmail and php mail() - "no recipients found"sendmail 和 php mail() - “找不到收件人”
【发布时间】:2016-04-07 00:39:39
【问题描述】:

我已经在我的 Apache 服务器 (Ubuntu) 上安装了 sendmail

除了使用 php mail(); 时未发送电子邮件外,一切似乎都可以找到。

我在 Apache 错误日志中收到一条错误消息:

/usr/sbin/sendmail: 找不到收件人

这是我使用函数的方式:

$user_email = "myemail@gmail.com";
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: ' . $user_email . "\r\n";
$headers .= 'From: Mydomain <do-not-reply@mydomain.com>' . "\r\n";

  mail($user_email,"subject","message",$headers);

【问题讨论】:

    标签: php sendmail


    【解决方案1】:

    $user_email = myemail@gmail.com

    应该是

    $user_email = "myemail@gmail.com";

    【讨论】:

    • 对不起,当我发布问题时出错了,$user_email = myemail@gmail.com 会抛出 PHP 错误,真正的代码当然是 $user_email = "myemail@gmail.com" ;
    • 我认为问题出在服务器上的 Apache/php 安装中,与代码无关
    【解决方案2】:

    导致错误的原因是您有 (在您原来发布的代码中):

    $user_email = myemail@gmail.com

    不包含引号和结束分号。

    这是正确的和正确的形式:

    $user_email = "myemail@gmail.com";
    

    也可以这样写,用单引号:

    $user_email = 'myemail@gmail.com';
    

    取自 PHP.net 上的 mail() 函数

    http://php.net/manual/en/function.mail.php

    【讨论】:

      【解决方案3】:

      我在我的 ubuntu/apache2/php 设置上安装了 ssmtp,我发现我必须在 php.ini 中设置 sendmail 参数

      mail.force_extra_parameters = -t

      据我了解,ssmtp 模拟 sendmail 设置,而 -t 参数强制 mta 扫描传入邮件(来自 PHP)以查找“To:”标头。

      需要注意的是,我还必须更改 ssmtp 安装创建的符号链接以包含 bin 的完整路径 (ln -s /usr/sbin/ssmtp sendmail),以便可以找到该文件通过阿帕奇

      【讨论】:

        猜你喜欢
        • 2012-02-12
        • 2017-10-28
        • 2017-01-18
        • 2022-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-21
        • 1970-01-01
        相关资源
        最近更新 更多