Les envois de mails avec PHP

Pour envoyer des mails, on va utiliser la librairie phpmailer de composer. Pour installer cette librairie :

    
        composer require phpmailer
    

Une fois installé, on va instancier un objet PHPmailer, que l'on va utiliser pour envoyer des mails.

    
        //ne pas oublier d'importer les classes de PHPMailer
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\Exception;

        $mail = new PHPMailer();
    

Une fois l'instance créée, on va ajouter des paramètres à l'objet pour réaliser l'envoi. Ici, on va paramétrer pour un envoi sur une adresse gmail.

    
        //encodage du mail
        $mail->CharSet = 'UTF-8';
        //on déclare que le mail sera envoyé via une requête SMTP
        $mail->IsSMTP(); 
        // Authentification SMTP active
        $mail->SMTPAuth = true;  
        //On définit l'adresse de l'hôte (ici pour un envoi gmail)
        $mail->Host = "smtp.gmail.com";
        // Ligne nécessaire sous certains domaines.
        $mail->SMTPSecure = 'ssl';
        //définition du port, différent pour chaque domaine.
        $mail->Port = 465;
        //Votre nom d'utilisateur sous le domaine défini (ici, gmail)
        $mail->Username = "************@gmail.com";    
        //Votre mot de passe sous le domaine défini (ici, gmail)
        $mail->Password = "*****";                     
        //L'adresse mail qui va envoyer le message
        $mail->setFrom('************@gmail.com', 'alias pas obligatoire');  
    

Ensuite, on va ajouter du contenu au mail.

    
        $mail->Subject = 'sujet du mail';
        $mail->Body = "contenu du mail";
        //ajouter une adresse mail
        $mail->AddAddress("nom de l'adresse","alias optionnel")
        //ajouter une pièce jointe
        $mail->AddAttachment('chemin_du_fichier/nom_de_la_piece_jointe','Changement_du_nom.extension');  
        //nombre de caractères avant retour automatique à la ligne
        $mail->WordWrap = 50;
    

Et enfin, on va envoyer ce mail.

    
        //$mail->send() envoie le mail, et les conditions sont là pour afficher un retour.
        if (!$mail->send()) {
            echo $mail->ErrorInfo;
        } else{
            echo 'Message bien envoyé';
        }
    

les sauts de ligne dans le message se font avec \n et il faut que $body soit obligatoirement entouré de "".
Pour customiser le mail, vous pouvez ajouter des balises spécifiques, des images,... dans Body.
Afin de réaliser des mails différents, je recommande l'utilisation d'une classe, qui possède dans le constructeur les paramétrages standards du mail, et de mettre dans des fonctions ce qui va différer d'un envoi à l'autre.