| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <?php
- use PHPMailer\PHPMailer\PHPMailer;
- use PHPMailer\PHPMailer\Exception;
- class Email
- {
- private static $smtpServer = EMAIL_SMTP_HOST;
- private static $smtpPort = EMAIL_SMTP_PORT;
- private static $smtpSecure = EMAIL_SMTP_SECURE;
- private static $username = EMAIL_SMTP_USER;
- private static $password = EMAIL_SMTP_PASSWORD;
- private static $fromEmail = EMAIL_FROM_EMAIL;
- private static $fromName = EMAIL_FROM_NAME;
- private static $templateDir = DIR_TEMPLATE_EMAILS;
- /**
- * Envoie un email avec les paramètres spécifiés.
- *
- * @param string $to L'adresse email du destinataire.
- * @param string $name Le nom du destinataire.
- * @param string $subject Le sujet de l'email.
- * @param string $message Le message de l'email.
- * @return bool Retourne TRUE en cas de succès, FALSE sinon.
- */
- public static function send(array $_data): bool
- {
-
- $to = empty($_data["to"]) ? NULL : $_data["to"];
- $name = empty($_data["name"]) ? NULL : $_data["name"];
- $subject = empty($_data["subject"]) ? NULL : $_data["subject"];
- $template = empty($_data["template"]) ? NULL : $_data["template"];
- if(is_null($to) OR is_null($name) OR is_null($subject) OR is_null($template)){
- historique::recRef("script");
- historique::add(array(
- "idType" => historique::getIdRef("ERROR"),
- "idUser" => session::getId(),
- "idPage" => historique::getIdRef("script"),
- "log" => "L'email en erreur car toutes les valeurs ne sont pas présentes."
- ));
- return FALSE;
- }
-
- // Créer une instance de PHPMailer
- $mail = new PHPMailer(true);
-
- // Paramètres du serveur
- self::configureMailer($mail);
- // Si debug send email
- if(debug::isFile("send-email")){
- $mail->SMTPDebug = 2;
- }
- // Destinataires
- $mail->setFrom(self::$fromEmail, self::$fromName);
- $mail->addAddress($to, $name);
- $mail->CharSet = 'UTF-8';
- // Contenu de l'email
- $mail->isHTML(true);
- $mail->Subject = "CSE Invent :. ". $subject;
- $mail->Body = $template;
- if(!debug::isFile("email")){
- try {
- $mail->send();
- return true;
- } catch (Exception $e) {
- $idSession = session::getId();
- if(empty($idSession)){
- $idSession = NULL;
- }
-
- historique::recRef("script");
- historique::add(array(
- "idType" => historique::getIdRef("ERROR"),
- "idUser" => $idSession,
- "idPage" => historique::getIdRef("script"),
- "log" => $mail->ErrorInfo
- ));
- return false;
- }
- }
- return true;
- }
- /**
- * Charge le template d'email spécifié.
- *
- * @param string $templateName Le nom du template à charger.
- * @return string|bool Le contenu du template ou FALSE en cas d'échec.
- */
- public static function loadTemplate(string $templateName)
- {
- $templatePath = self::$templateDir . $templateName;
- $template = file_get_contents($templatePath);
- return $template !== false ? $template : false;
- }
- /**
- * Configure les paramètres de PHPMailer.
- *
- * @param PHPMailer $mail L'instance de PHPMailer à configurer.
- */
- private static function configureMailer(PHPMailer $mail)
- {
- $mail->isSMTP();
- $mail->Host = self::$smtpServer;
- $mail->SMTPAuth = true;
- $mail->Username = self::$username;
- $mail->Password = self::$password;
- $mail->SMTPSecure = self::$smtpSecure;
- $mail->Port = self::$smtpPort;
- }
- }
|