Comment envoyer un mail en php

    Publié le : 27-09-2020 14:16

    Introduction

    L'envoi d'email en PHP se fait traditionnellement par la fonction mail() le fait est à l'usage que cette fonction cause plusieurs problèmes principalement qu'il n'est pas possible de s'identifier au prêt d'un serveur SMTP. L'envoi s'effectuant de manière anonyme, et le mail arrivant très souvent dans les spams.

    Pour cette raison une bibliothèque open source existe PhpMailer.

    Déployer PhpMailer sur un projet

    Pour intégrer PhpMailer à un projet il faut suivre les étapes suivantes :

    1. Télécharger la source
    2. Déziper l'archive
    3. Copier le dossier dans l'arborescence de votre projet à l'emplacement de votre choix
    4. Inclure dans le code PHP les dépendances minimales
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    
    require 'path/to/PHPMailer/src/Exception.php';
    require 'path/to/PHPMailer/src/PHPMailer.php';
    require 'path/to/PHPMailer/src/SMTP.php';

    Préparer un email

    Pour paramétrer un email il convient de précisier le serveur SMTP,le port du serveur, le protocole de sécuriter à utiliser, l'adresse email et le mot de passe à utiliser.

    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->Host = 'ssl0.ovh.net';               //Adresse IP ou DNS du serveur SMTP
    $mail->Port = 465;                          //Port TCP du serveur SMTP
    $mail->SMTPAuth = 1;                        //Utiliser l'identification
    
    if($mail->SMTPAuth){
       $mail->SMTPSecure = 'ssl';               //Protocole de sécurisation des échanges avec le SMTP
       $mail->Username   =  'login@host.net';   //Adresse email à utiliser
       $mail->Password   =  'password';         //Mot de passe de l'adresse email à utiliser
    }
    
    
    
    

    Ajouter du contenu HTML et TEXT

    $mail->CharSet	  = ENCODE_UTF8;                       //Format d'encodage à utiliser pour les caractères
    $mail->From       =  'contact@host.net';                //L'email à afficher pour l'envoi
    $mail->FromName   = 'Contact de host.net';             //L'alias à afficher pour l'envoi
    $mail->Subject    =  'Mon sujet';                      //Le sujet du mail
    $mail->WordWrap   = 50; 			                   //Nombre de caracteres pour le retour a la ligne automatique
    $mail->AltBody = 'Mon message en texte brut'; 	       //Texte brut
    $mail->IsHTML(false);                                  //Préciser qu'il faut utiliser le texte brut
    
    if($in_Html_Body != null){
       $mail->MsgHTML($in_Html_Body); 		                //Le contenu au format HTML
       $mail->IsHTML(true);
    }

    Ajouter un utilisateur (sans alias)

    $mail->AddAddress('johndoe@ovh.net');
    $mail->AddAddress('papyquebec@ovh.net');

    Ajouter un utilisateur (avec un alias)

    $mail->AddAddress('johndoe@ovh.net','John Doe');
    $mail->AddAddress('papyquebec@ovh.net','Papy Quebec');

    Ajouter un utilisateur en CCI/BBC (Copie conforme invisible)

    $mail->addBCC('hollow_man@ovh.net','Sebastian Caine');
    

    Ajouter une pièce jointe

    $mail->AddAttachment('./doc/content/rapport.pdf','Rapport_2018.pdf');  

    Envoyer l'email

    $mail->Send();