Envoyer un mail en PHP
PHP est fourni avec une fonction native permettant d'envoyer des email : mail()
.
Pour l'utiliser, il suffit de lui passer en paramètre l'adresse email du destinataire, l'objet du mail ainsi que le message. Un quatrième paramètre permet d'envoyer des headers personnalisés, ce qui sert par exemple à envoyer des mails en texte riche (en HTML), ou à spécifier l'encodage (Latin1, UTF-8) :
<?php $destinataire = "bob@yopmail.com"; $objet = "Alice parle à Bob"; $content = "<b>Salut Bob !</b>"; $headers = ""; $headers .= "From: alice@yomail.com\n"; $headers .= "MIME-version: 1.0\n"; $headers .= "Content-type: text/html; charset=utf-8\n"; $result = mail($destinataire, $objet, $content, $headers); if( !$result ){ echo "L'envoi du mail a échoué"; } ?>
Configuration de l'envoi de mail
La fonction mail n'est pas magique, en réalité son fonctionnement dépend du fichier de configuration de PHP : php.ini
.
UNIX
Sur un serveur UNIX (Linux, Mac OS), PHP utilise le serveur SMTP installé sur la machine pour envoyer le mail. En général il s'agit d'un de ces 3 programmes : sendmail, postfix ou qmail.
Concernant Linux c'est assez facile à installer avec une ligne de commande, par contre sur MacOS c'est beaucoup plus délicat, vous trouverez plus d'infos ici pour configurer php pour envoyer des mails sur MacOS : http://jspr.tndy.me/php-mail-and-osx-leopard/.
Windows
Heureusement si vous développez sous windows (avec EasyPHP ou WAMP) c'est beaucoup plus simple, car sur cette plateforme, PHP utilise le serveur SMTP configuré dans php.ini
:
Dans un tout autre contexte, cet article est très intéressant : ouvrir plusieurs fenêtres excel en même temps.
[mail function] ; For Win32 only. SMTP = smtp.orange.fr smtp_port = 25 ; For Win32 only. sendmail_from = me@example.com
Classe d'envoi de mail
La fonction mail() native de PHP n'est pas le seul moyen d'envoyer des emails, il existe des classes PHP à télécharger sur internet qui sont spécialement conçues pour gérer l'envoie de mail avancé. Cela permet par exemple d'envoyer des mails en HTML (texte riche) sans devoir gérer soit même les headers :
- PHPMailer
- CakeEmail, un composant du framework CakePHP
- Swiftmailer
- Simplemail : une classe obsolète qu'on trouve sur certains vieux projets web, le site officiel est fermé, il est très difficile de se la procurer
Encore faim ? allez lire ça : texte corde 3d !