Outils pour utilisateurs

Outils du site


fonction_mail_php

Fonction mail de PHP et mails en lignes de commande

Si vous avez suivi le processus d'installation d'un serveur email complet vous pouvez envoyer et recevoir des mails depuis un client. Cependant il peut être intéressant d'automatiser l'envoi de mail depuis votre serveur.

Deux cas de figure peuvent se présenter :

  • L'envoi de mails depuis la ligne de commande
  • L'envoi de mails depuis PHP via la fonction mail()

msmtp

Msmtp est un client qui permet d'envoyer des mails depuis la ligne de commande. Il est très simple d'utilisation mais aussi très complet. C'est cet outils qui permettra à un programme d'envoyer des mails et d'utiliser mail() de PHP.

Il s'installe sous Debian et Ubuntu via : apt-get install msmtp

Configuration

Le principe de ce client est d'attribuer à chaque utilisateur Unix un fichier de config ~/.msmtprc qui stockera toutes les informations de connexion. Exemple pour un utilisateur toto :

account toto
host smtp.domaine.tld
port 25
from toto@domaine.tld
auth on
user toto@domaine.tld
password mot_de_passe
tls on
tls_starttls on
tls_certcheck off

account default: toto

Comme ce fichier le laisse transparaître, les informations de connexions sont exactement les mêmes que pour n'importe quel client de messagerie, ce qui veut dire que vous pouvez configurer n'importe quel compte de messagerie comme gmail par exemple. Attention : le mot de passe est en clair dans le fichier, seul l'utilisateur doit avoir accès à ce fichier chmod 600 ~/.msmtprc

Msmtp fonctionne comme sendmail, le programme usuel d'envoi de mail sous Unix. Il est d'ailleurs compatible avec ses options. Ainsi si vous avez un fichier contenant un texte à envoyer par mail : cat fichier_mail | msmtp destinataire@domaine.tld

PHP

Beaucoup de CMS utilisent l'envoi de mails depuis PHP pour créer des comptes ou notifier d'un message privé. Pour cela ils utilisent la fonction mail() de PHP. Cette fonction peut être assez compliquée à configurer, mais l'utilisation de msmtp facilite grandement les choses.

Il suffit alors de configurer l'envoi de mail pour le compte responsable du serveur web, généralement www-data. On va donc configurer un fichier .msmtprc pour cet utilisateur. Cependant au lieu de mettre ce fichier dans le homedir on va le placer à l'extérieur de ce répertoire, histoire de pas avoir de fuite malencontreuse de mot de passe à cause d'un serveur web trop permissif :

/etc/php5/cgi/mail.ini

account webmaster
host smtp.domaine.tld
port 25
from webmaster@domaine.tld
auth on
user webmaster@domaine.tld
password mot_de_passe
tls on
tls_starttls on
tls_certcheck off

account default: webmaster
chmod 600 /etc/php5/cgi/mail.ini

Ensuite il faut indiquer à PHP qu'il doit utiliser msmtp. Dans /etc/php5/cgi/php.ini :

sendmail_path = msmtp -C /etc/php5/cgi/mail.ini -t -i

mail.add_x_header = Off

fonction_mail_php.txt · Dernière modification: 2019/04/02 11:14 (modification externe)