我正在尝试使用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,但命令无论是否有效)。
另一个更新 -
我注释掉sendmail_path和sendmail_from行从头开始,期望mail()函数抱怨php不知道它是什么但是我得到了与以前完全相同的错误(即使完全没有两行! !)。这让我相信它根本不与sendmail程序或mail()函数有关......
答案 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()输出中的以下部分,以确保编辑正确的文件:
如果您编辑的文件未列在其中一个部分中,则更改将无效。
答案 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 );