【问题标题】:php5 mail() function sendmail errorphp5 mail() 函数发送邮件错误
【发布时间】:2011-05-03 12:50:55
【问题描述】:

我正在尝试使用 php 的 mail() 函数,但一直出错。我通过sudo apt-get install sendmail 安装了sendmail,编辑了我的/etc/php5/cli/php.ini 文件,在这些行中添加了以下文本:

 sendmail_path = /usr/sbin/sendmail -t
 sendmail_from = uslonsweb003.ALU@no-reply.com

然后我重新启动了我的网络服务器并使用此命令进行测试:

 :~$ php -r "mail('sadmicrowave@gmail.com', 'test subject', 'test body message');"

但我每次都收到以下错误!!!:

 sh: -t: not found

这很奇怪,因为我尝试了带 -t 和不带 -t 的 sendmail_path,但我一直收到同样的错误。我做错了什么?

更新!这是我的 phpinfo() 显示的内容:(我添加了 -t ,但无论有没有它,该命令都不起作用)。

另一个更新 -

我注释掉了 sendmail_path 和 sendmail_from 行以从头开始预期 mail() 函数抱怨 php 不知道它是什么,但我得到了与以前完全相同的错误(即使完全没有这两行! !)。这让我相信它根本与 sendmail 程序或 ma​​il() 函数无关......

【问题讨论】:

  • 不确定是否重要,但您是否重新启动了 sendmail?
  • @tony - 完全重启网络服务器应该做同样的事情......对吗? - 无论如何 - 手动重新启动服务,它仍然给出同样的错误。

标签: php apache2 webserver sendmail


【解决方案1】:

我不知道,但你可以试试sendmail_path = /usr/sbin/sendmail -t -i。它设置在我使用的虚拟主机上。否则,您可能需要检查phpinfo() 是否包含sendmail 的正确设置。

【讨论】:

  • 我同意,听起来您为设置这些新值所做的一切都不起作用,并且仍在使用默认值。
  • @Tony - 请参阅我的原始帖子以获取我的 phpinfo() 输出的屏幕截图。
  • @sadmicrowave,您缺少 -i,还要确保您的 /usr/sbin/ 中确实有 sendmail,因为我的在 /usr/bin 中;发出“which sendmail”命令来找出确切的路径。
【解决方案2】:

我认为该错误表明您缺少 -t 将要查找的信息 'To:' 、 'CC:' 或 'BCC:'

尝试在您的邮件命令行中添加一些额外的信息,看看是否可行:

php -r "mail('sadmicrowave@gmail.com', 'test subject', 'test body message', 'To: Receiver <receiver@email.com>');"

【讨论】:

    【解决方案3】:

    查看 phpinfo() 输出中的以下部分,以确保您正在编辑正确的文件:

    • 加载的配置文件
    • 解析了其他 .ini 文件

    如果您编辑的文件未在这些部分之一中列出,则更改将无效。

    【讨论】:

    • “加载的配置文件”是/etc/php5/apache2/php.ini,我还使用与 cli/php.ini 文件中相同的内容对其进行了编辑……因此显然正在捕获更改。另外,请参阅我的 OP 中的屏幕截图,以查看是否正在捕获更改...
    【解决方案4】:

    我通过使用 SwiftMailer 模块解决了我的问题,在该模块中我可以指定一个邮件服务器进行中继。我使用我公司的邮件服务器作为服务器属性,并继续指定如下选项:

    require_once('/var/www/global/swiftmailer/lib/swift_required.php');
    $transport = Swift_SmtpTransport::newInstance( 'mailout.usa.mycompany.com', 25 );
    $mailer = Swift_Mailer::newInstance( $transport );
    $message = Swift_Message::newInstance( 'Suggestion Status Update' )
        ->setFrom( array( 'uslonsweb003@no-reply.com' => 'SuggestionBox' ) )
        ->setTo( array( $pEmail => $username ) )
        ->setBody( $body, 'text/html' )
        ;
    $result = $mailer->send( $message );
    

    【讨论】:

      猜你喜欢
      • 2011-06-05
      • 2013-04-13
      • 2012-01-26
      • 2011-01-24
      • 2012-05-09
      • 2014-03-24
      • 1970-01-01
      • 2021-12-08
      • 2014-07-14
      相关资源
      最近更新 更多