7

jeudi 2 août 2012

Activer la function mail() pour son serveur php

Bonjour a tous et a toutes, 
voici a un petit mémo sur la function mail.

Serveur dédié (ou pas), si nous n'avons pas l’utilité d'un véritable serveur mail (genre l'usine postfix) pour quoi s’embêter. Voyons comment envoyer des email son pouvoir en recevoir. (je suis sur un debian a vous d'adapter)

On install Sendmail qui ce chargera de ça.
# sendmail_path =/usr/sbin/sendmail -t -i

On config dans le php.ini.
# nano /etc/php5/apache2/php.ini

On recherche la partie sendmail.
Ctrl+w sendmail
Remplacer :
;sendmail_path =
Par :
sendmail_path =/usr/sbin/sendmail -t -i
Sav :
Ctrl+x
Y
Entrée

Et on redémarre apache  (ou ce qui gère votre php - serveur web)
# /etc/init.d/./apache2 restart

Testons avec un petit script php, envoyons nous un email.
<?php
$email = 'votre e-mail';
$subject = 'E-mail de teste';
$message = 'Bonjour,'. "\r\n" .'vous venez de vous envoyer un e-mail';
$headers = 'From: teste-no1' . "\r\n" .
  'Reply-To: reload@e-mail-test' . "\r\n" .
  'X-Mailer: PHP/' . phpversion();


if (mail($email, $subject, $message, $headers)) {
   echo = 'l email est envoyé.';
   header( "refresh:3;url=/" );
   }

else {
   echo = 'Une erreur est survenue lors de l\'envoi de l\'email.';

   }
?>

Et voila, vous pouvez envoyez des e-mail ... Simple, non ?!

Il est possible d'avoir une erreur comme quoi le mail n'est pas envoyé ou de ne pas le recevoir. Vérifiez le fichier log :
cat /var/log/mail.log

Si ça ne donne rien ou que le fichier "mail.log" n'existe pas. Verifiez les log apache2 (/var/log/apache2/) et si Sendmail est bien installé avec cette commande :
dpkg -l | grep sendmail


éa, les amis.