php5 mail()函数sendmail错误

时间:2011-05-03 12:50:56

标签: php apache2 webserver sendmail

我正在尝试使用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但是我一直遇到同样的错误。我做错了什么?

UPDATE!这就是我的phpinfo()显示的内容:(我添加了-t,但命令无论是否有效)。

enter image description here

另一个更新 -

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我接受错误表示您错过了-t将要查找的信息,'收件人:','CC:'或'BCC:'

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

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

答案 2 :(得分:0)

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

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

如果您编辑的文件未列在其中一个部分中,则更改将无效。

答案 3 :(得分:0)

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

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 );