Files
ship2net-www/config/fonctions_mail.php
T

104 lines
4.2 KiB
PHP

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require_once("../vendor/autoload.php");
//************************************************************************************************************
// Fonction d'envoi d'un email avec PHPMail
// NB : Un tuto assez complet, et à jour (!), sur l'utilisation de PHPMailer
// est disponible à https://alexwebdevelop.com/phpmailer-tutorial/#why-you-should-use-phpmailer
// Reçoit :
// - le nom du destinataire (ce champs peut être vide)
// - adresse email du destinataire
// - objet du message
// - texte brut (peut contenir de l'HTML)
// - nom de l'expéditeur (peut être vide)
// - adresse de l'expéditeur
// - fichier(s) joint(s) sous forme de tableau "$fichier_joints[N]['fichier']" et "$fichier_joints[N]['nom']"
// /!\ Le nombre maxi de fichier joints est limité à 10 (cf le code). Si vous en mettez plus, les derniers ne seront pas traités...
// Mais on peut changer cette valeur sans soucis...
// Retour : Rien
//************************************************************************************************************
function Envoi_email($nom_destinataire, $adresse_destinataire, $objet, $texte_brut, $nom_expediteur, $adresse_expediteur, $fichiers_joints)
{
global $message_information;
// Entête HTML :
$message_html = '
<html>
<head>
<meta charset="UTF-8">
<style type="text/css">
body {font-family: Calibri, Verdana; color:rgb(0, 69, 99); }
gras {font-weight: bold; }
souligne {text-decoration: underline; }
p {margin:8px 0px; padding:0px; }
table {border-collapse: collapse; }
table th {border: 1px solid rgb(0, 69, 99); background-color: rgb(0, 69, 99); color: rgb(255, 255, 255); padding: 5px 10px; }
table td {border: 1px solid rgb(0, 69, 99); padding: 5px 10px; font-size:0.9em;}
</style>
</head>
<body>
'.$texte_brut.'
</body>
</html>';
$mail = new PHPMailer();
$mail->CharSet = 'UTF-8'; // Format d'encodage à utiliser pour les caractères
// $mail->SMTPDebug = 4; // Valeur entre 0 (normal) et 4 (full debug). Attention : mettre cette valeur > 0 dévoule certains paramètres confidentiels !
$mail->isSMTP();
$mail->Host = 'ssl0.ovh.net'; // Adresse IP ou DNS du serveur SMTP
$mail->Port = 587; // Port TCP du serveur SMTP (port SMTP chez OVH : 465=avec_SSL et 587=sans_SSL/avec_tls)
$mail->SMTPAuth = TRUE; // Utiliser l'authentification
if($mail->SMTPAuth)
{
$mail->SMTPSecure = 'tls'; // Protocole de sécurisation des échanges avec le SMTP
$mail->Username = 'do_not_answer@koriolan.tech'; // Adresse email à utiliser pour le compte SMTP
$mail->Password = SMTP_PASSWORD; // Mot de passe de l'adresse email à utiliser
}
if ($nom_expediteur == "") $mail->setFrom($adresse_expediteur);
else $mail->setFrom($adresse_expediteur, $nom_expediteur); // L'email et l'alias (facultatif) à afficher pour l'envoi
if ($nom_destinataire == "") $mail->AddAddress($adresse_destinataire);
else $mail->AddAddress($adresse_destinataire, $nom_destinataire); // L'email du destinataire et son alias (facultatif)
// $mail->addBCC('do_not_answer@koriolan.tech','ShipHeart by Koriolan'); // Destinataire BCC (idem AddAddress)
$mail->Subject = $objet; // Le sujet du mail
$mail->isHTML(TRUE); // Indique que le message dans Body sera en HTML
$mail->Body = $message_html;
$mail->AltBody = $texte_brut; // Texte brut alternatif
for ($i = 0; $i < 10; $i ++) // Pièces jointes (limité à un maxi de 10 !):
{
if (!isset($fichiers_joints[$i]['fichier']) OR ($fichiers_joints[$i]['fichier'] == "")) break;
else
{
if (isset($fichiers_joints[$i]['nom']) AND ($fichiers_joints[$i]['nom'] != "")) $mail->AddAttachment($fichiers_joints[$i]['fichier'], $fichiers_joints[$i]['nom']);
else $mail->AddAttachment($fichiers_joints[$i]['fichier']);
}
}
if(!$mail->Send()) // Envoi de l'email et test du résultat
{
// $message_information .= "Erreur lors de l'envoi de l'email. PHPMailer Error = [" . $mail->ErrorInfo."]";
}
else
{
// $message_information .= "L'email a été envoyé correctement.";
}
}