Installer l’envoi de mails depuis son site : la fonction php mail()

Quelque soit le moteur de votre site, vous pouvez envoyer des mails automatiquement avec la fonction mail() de PHP. Sur des hébergements mutualisés, souvent les prérequis à cela sont déjà faits, mais sur un serveur dédié, c’est à vous de vous en occuper. Voici un tutoriel très simple pour vous aider.

Avec de nombreux CMS ou moteurs de site tel que Wordpress par exemple, vous avez la possibilité d’envoyer ou de recevoir des mails directement depuis votre site. De manière automatisée ou non, dans tous les cas, c’est la fonction mail() de PHP qui est utilisée.

Une fonction mail() de PHP

A elle seule, cette fonction ne fait pas grand chose. Par défaut, elle va essayer de transmettre les arguments (destinataires, sujet, message …) qui lui sont transmis lors de son appel dans le code à un programme nommé sendmail. Encore faut-il que cette fonction soit activée dans votre configuration de PHP. Pour vérifier cela, il suffit de vérifier que la ligne n’est pas mise en commentaire dans le fichier php.ini.

Le fichier de configuration php.ini

Vous pourrez le trouver par exemple ici : /etc/php5/apache2/php.ini .
La partie qui nous intéresse est le bloc suivant :

[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path =/usr/sbin/sendmail -t -i

La dernière ligne est à décommenter, elle indique le chemin de sendmail. Si vous désirez utiliser un autre programme que sendmail, il est possible de le changer ici. Mais bien que nous allons utiliser Exim, nous ne toucherons pas davantage ce fichier car il existe un autre moyen d’envoyer la fonction mail vers le programme choisi.

Un agent de transfert de courrier, Exim

Appelé aussi MTA (Mail Transfert Agent), celui s’occupe comme beaucoup d’autres programmes comme sendmail, esmtp, postfix ou qmail par exemples, de gérer l’envoi et la réception de courriers sur votre serveur. J’ai choisi Exim car sa mise en place pour le lier simplement à la fonction mail est très simple. Ne désirant pas une usine à gaz du genre de Postfix et ne souhaitant pas réellement gérer des mails sur le serveur, Exim m’est apparu suffisant et simple.

Etant sur une distribution Ubuntu Server donc de type Debian, son installation se fait simplement par la ligne suivante :

apt-get install exim

Ceci va installer Exim, le programme en lui-même et Eximconfig le programme de configuration.

Une configuration simple d’Exim

Une fois le paquet installé, le processus de configuration est lancé automatiquement et consiste à vous posez une série de questions :

  • La 1ère question vous demande quel type de site et de serveur de mail vous mettez en place, répondre 1

  • La 2ème question vous demande le domaine d’expédition qui sera visible dans le mail, donc ce qui est après l’@. pour moi il s’agit donc de khayspace.info .

  • Pour la 3ème, 4ème et la 5ème questions, répondre none (concerne les autres noms de domaines, relais de domaines et de machines).

  • La 6ème question vous demande le nom d’un compte utilisateur pour recevoir les mails.

  • La 7ème question vous propose de réécrire le fichier /etc/aliases , répondez positivement.

  • La dernière question est la validation finale des réponses précédentes.

Si vous désirez modifier ces paramètres, vous pourrez le faire ultérieurement en appelant Eximconfig ou en modifiant le fichier /etc/exim/exim.conf puis en relançant Exim par la commande /etc/init.d/exim restart

Une liaison d’Exim avec la configuration PHP

Nous avions vu que nous pouvions indiquer dans le fichier de configuration php.ini le MTA utilisé, par défaut sendmail.

Au lieu de remplacer sendmail par exim, nous allons faire croire que la fonction mail() de PHP appelle sendmail mais rediriger cet appel vers exim. Cela se fait tout simplement par un lien symbolique entre sendmail et exim avec la commande :

ln -s /usr/sbin/exim /usr/sbin/sendmail

Voilà, la fonction mail() appellera directement Exim avec cette astuce. Tout est prêt techniquement du point de vue du serveur. Sauf peut-être à vérifier que les ports pour les mails sont bien ouverts. Rappelez-vous de Iptables dans ce billet.

Alors ? Vous avez trouver cela difficile à mettre en place ?

No related posts.

La liste des entrées complémentaires est établie par le module d’extension YARPP.

4 Réponses to “Installer l’envoi de mails depuis son site : la fonction php mail()”

  1. Bonjour :) désolée, je ne connais pas les fonctions de WordPress. Dommage d’ailleurs, tu as souvent des articles qui m’intéressent, mais qui font appel à des langages informatiques que je ne peux pas utiliser.

  2. Ce billet ne concerne nullement Wordpress spécifiquement. Il est plutôt destiné à tous ceux qui ont un hébergement sur lequel l’envoi de mail n’est pas opérationnel. Donc, cela concerne surtout les serveurs dédiés et les serveurs persos car sur les serveurs mutualisés en général ca marche déjà.

    Merci pour la remarque ;) Je parle essentiellement de configuration plutôt que de programmation.

    Découvrir un peu de starkhay

    Khaybox 1 : la boîte à liens de Starkhay

    Cela faisait un moment que je voulais partager des liens de sites que je trouve très utiles. Alors voilà c’est fait, et ce sera dorénavant une rubrique régulière. Dans ce 1er opus, voici des si[...]

  3. obligatoire pour mes formulaires de contact PHP,
    merci pour le tuto :)

  4. Bonjour

    Merci bcp pour ce tuto.
    en faite je me demande comment je peux appliquer cette procédure sur mon poste local tout en sachant que j’utilise windows xp comme OS. ???

    cdt

Laisser un commentaire

Powered by WP Hashcash

 
close

You need to log in to vote

The blog owner requires users to be logged in to be able to vote for this post.

Alternatively, if you do not have an account yet you can create one here.

Powered by Vote It Up