邮件程序错误:无法执行:/ usr / sbin / sendmail
我正在使用debian服务器,文件权限是777(全部都有),所以我无法执行它为什么会这样?
//Create a new PHPMailer instance
$mail = new PHPMailer();
// Set PHPMailer to use the sendmail transport
$mail->isSendmail();
//Set who the message is to be sent from
$mail->setFrom('admin@test.com', 'test');
//Set an alternative reply-to address
//$mail->addReplyTo('replyto@example.com', 'First Last');
//Set who the message is to be sent to
$mail->addAddress($_POST['email'], $_POST['name']);
//Set the subject line
$mail->Subject = 'PHPMailer sendmail test';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML("from test");
//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';
//Attach an image file
//$mail->addAttachment('images/phpmailer_mini.gif');
//send the message, check for errors
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
答案 0 :(得分:8)
默认情况下,未安装Ubuntu sendmail
。您必须手动安装它:
sudo apt-get install sendmail-bin
如果安装了它,可能要做的是检查/usr/sbin/sendmail
符号链接上的属性,并确保它至少对系统上的所有用户都是可执行的:
chmod 755 /usr/sbin/sendmail
如果您使用的是PHPMailer,可以使用以下方式设置Sendmail
路径:
$mail->Sendmail = '/usr/sbin/sendmail';
很容易测试PHP代码或邮件服务器配置中的问题,甚至可能是防火墙。尝试从命令行运行,看看是否收到了您的电子邮件:
/usr/sbin/sendmail -v my@address.com < email.test
此外,您实际上可以收到邮件,但可以将其放入垃圾邮件文件夹中,因此也请检查邮件。
还有一件事是您应该安装sendmailconfig
然后运行它来配置它:
sudo sendmailconfig
详细了解如何在Ubuntu上配置sendmail
:sendmail: how to configure sendmail on ubuntu?
答案 1 :(得分:1)
直接问题似乎是您的系统上没有安装/usr/sbin/sendmail
。有多个MTA提供此功能,因此不需要安装Sendmail套件;事实上,我建议反对它,支持Postfix或一些非常简单的MTA,如smtpd
。 Provides: sendmail
应该执行的任何包。
需要指出的另一个问题是chmod 777
权限。你绝对不应该在生产系统上做任何世界上可写的东西。如果您可以信任该组,则PHP脚本的正确权限为755
或775
。 httpd
进程当然不需要能够写入脚本 - 实际上,绝对不应该允许向脚本文件写入任何内容。