Home  >  Article  >  Backend Development  >  Analysis and solutions to the reasons why PHP cannot use the mail function

Analysis and solutions to the reasons why PHP cannot use the mail function

伊谢尔伦
伊谢尔伦Original
2017-06-27 10:53:192913browse

PHP requires an installed and running mail system in order to make the mail function mail() available. The mail system program used is set in the php.ini file.

Use the following code to send emails, but the delivery always fails.

[PHP] view plaincopyprint?

<?php  
$to = "xxxxxxxx@qq.com";  
$subject = "Test mail";  
$message = "Hello! This is a simple email message.";  
mail($to,$subject,$message);  
?>

After investigation, PHP requires an installed and running mail system in order to make the mail function mail() available. The mail system program used is set in the php.ini file. The specific solutions are as follows:
1. Install sendmail
sudo apt-get install sendmail
sudo apt-get install sendmail-cf
sudo apt-get install mailutils
2. Configure sendmail
Open /etc/mail/sendmail.mc and find the following line:
DAEMON_OPTIONS('Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
Change 127.0.0.1 Change to 0.0.0.0
Execute the following command to back up the old configuration file and generate a new configuration file:
cd /etc/mail
mv sendmail.cf sendmail.cf~
m4 sendmail.mc > sendmail.cf
3. Test
echo "This is a test mail." | mail -s "test" xxxxxxxx@qq.com
Note: This email will be treated as For spam reception, in addition, if you use the 163 mailbox, it may be directly filtered and cannot be received.
4. Configure the php.ini file
Open /etc/php5/apache2/php.ini and find the following line:
; sendmail_path =
Change the line to: sendmail_path = /usr/sbin /sendmail -t

What needs special attention here is that the "-t" parameter is essential. If it is missing, the mail() function will fail to execute when the original php file is executed through the browser, but if There will be no problem if you use the php command line directly on the server to execute the original php file.

5. Restart apache
sudo /etc/init.d/apache2 restart


At this time, execute the original php code again,mail Sending was successful.

The above is the detailed content of Analysis and solutions to the reasons why PHP cannot use the mail function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn