Maison >développement back-end >tutoriel php >Analyse et solutions aux raisons pour lesquelles PHP ne peut pas utiliser la fonction mail
PHP nécessite un système de messagerie installé et en cours d'exécution pour que la fonction de messagerie mail() soit disponible. Le programme du système de messagerie utilisé est défini dans le fichier php.ini.
Utilisez le code suivant pour envoyer des e-mails, mais la livraison échoue toujours.
[PHP] view plaincopyprint ?
<?php $to = "xxxxxxxx@qq.com"; $subject = "Test mail"; $message = "Hello! This is a simple email message."; mail($to,$subject,$message); ?>
Après enquête, PHP nécessite un système de messagerie installé et en cours d'exécution afin de rendre la fonction de messagerie mail() disponible. Le programme du système de messagerie utilisé est défini dans le fichier php.ini. Les solutions spécifiques sont les suivantes :
1. Installez sendmail
sudo apt-get install sendmail
sudo apt-get install sendmail-cf
sudo apt-get install mailutils
2.
Ouvrez /etc/mail/sendmail.mc et recherchez la ligne suivante :
DAEMON_OPTIONS('Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
Change 127.0.0.1 Remplacez par 0.0.0.0
Exécutez la commande suivante pour sauvegarder l'ancien fichier de configuration et générer un nouveau fichier de configuration :
cd /etc/mail
mv sendmail.cf sendmail.cf~
m4 sendmail.mc > sendmail.cf
3. Test
echo "Ceci est un mail de test -s "test" xxxxxxxx@qq.com
Remarque. : Cet email sera traité comme Pour la réception de spam, de plus, si vous utilisez la boite mail 163, il risque d'être directement filtré et ne pourra pas être reçu.
4. Configurez le fichier php.ini
Ouvrez /etc/php5/apache2/php.ini et recherchez la ligne suivante :
; sendmail_path =
Changez la ligne par : sendmail_path = /usr/ sbin /sendmail -t
Ce qui nécessite une attention particulière ici, c'est que le paramètre "-t" est essentiel s'il est manquant, la fonction mail() ne pourra pas s'exécuter lorsque le fichier php d'origine sera exécuté via le. navigateur, mais s'il n'y aura aucun problème si vous utilisez la ligne de commande php directement sur le serveur pour exécuter le fichier php d'origine.
5. Redémarrez Apache
sudo /etc/init.d/apache2 restart
À ce moment, exécutez à nouveau le code php d'origine, mail envoyé avec succès.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!