Debian can't send mail from PHP
Solution 1
In Ubuntu sendmail
is not installed by default. You will have to install it manually:
sudo apt-get install sendmail-bin
EDIT 1:
In case you're using PHPMailer you can set Sendmail
path using:
$mail->Sendmail = '/usr/sbin/sendmail';
It's easy to test if the problem in PHP code or in your mail server configuration, or even probably firewall. Try running from the command line and see if you receive your email:
/usr/sbin/sendmail -v [email protected] < email.test
Additionally you actually could receive the mail but it could be put in SPAM folder, so check for the message there as well.
EDIT 2:
And one more thing is that you should install sendmailconfig
and then run it to configure it:
sudo sendmailconfig
Read more about configuring sendmail
on Ubuntu: sendmail: how to configure sendmail on ubuntu?
Solution 2
The immediate problem appears to be that you did not have /usr/sbin/sendmail
installed on your system. There are multiple MTAs which provide this, so there is no particular need to install the Sendmail suite; in fact, I would recommend against it, in favor of Postfix or some really simple MTA such as smtpd
. Any package which Provides: sendmail
should do.
The other problem which needs to be pointed out is the chmod 777
permission. You should absolutely not make anything on a production system world-writable. The correct permission for a PHP script is 755
or possibly 775
if you can trust the group. The httpd
process certainly does not need to be able to write to the script -- indeed, should absolutely not be allowed to write anything to the script file.
yeah its me
Updated on June 04, 2022Comments
-
yeah its me almost 2 years
Mailer Error: Could not execute: /usr/sbin/sendmail
I'am using debian server, the file permission is 777(all alowed), so I can't execute it why is that?
//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('[email protected]', 'test'); //Set an alternative reply-to address //$mail->addReplyTo('[email protected]', '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!"; }