email.class.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. use PHPMailer\PHPMailer\PHPMailer;
  3. use PHPMailer\PHPMailer\Exception;
  4. class Email
  5. {
  6. private static $smtpServer = EMAIL_SMTP_HOST;
  7. private static $smtpPort = EMAIL_SMTP_PORT;
  8. private static $smtpSecure = EMAIL_SMTP_SECURE;
  9. private static $username = EMAIL_SMTP_USER;
  10. private static $password = EMAIL_SMTP_PASSWORD;
  11. private static $fromEmail = EMAIL_FROM_EMAIL;
  12. private static $fromName = EMAIL_FROM_NAME;
  13. private static $templateDir = DIR_TEMPLATE_EMAILS;
  14. /**
  15. * Envoie un email avec les paramètres spécifiés.
  16. *
  17. * @param string $to L'adresse email du destinataire.
  18. * @param string $name Le nom du destinataire.
  19. * @param string $subject Le sujet de l'email.
  20. * @param string $message Le message de l'email.
  21. * @return bool Retourne TRUE en cas de succès, FALSE sinon.
  22. */
  23. public static function send(array $_data): bool
  24. {
  25. $to = empty($_data["to"]) ? NULL : $_data["to"];
  26. $name = empty($_data["name"]) ? NULL : $_data["name"];
  27. $subject = empty($_data["subject"]) ? NULL : $_data["subject"];
  28. $template = empty($_data["template"]) ? NULL : $_data["template"];
  29. if(is_null($to) OR is_null($name) OR is_null($subject) OR is_null($template)){
  30. historique::recRef("script");
  31. historique::add(array(
  32. "idType" => historique::getIdRef("ERROR"),
  33. "idUser" => session::getId(),
  34. "idPage" => historique::getIdRef("script"),
  35. "log" => "L'email en erreur car toutes les valeurs ne sont pas présentes."
  36. ));
  37. return FALSE;
  38. }
  39. // Créer une instance de PHPMailer
  40. $mail = new PHPMailer(true);
  41. // Paramètres du serveur
  42. self::configureMailer($mail);
  43. // Si debug send email
  44. if(debug::isFile("send-email")){
  45. $mail->SMTPDebug = 2;
  46. }
  47. // Destinataires
  48. $mail->setFrom(self::$fromEmail, self::$fromName);
  49. $mail->addAddress($to, $name);
  50. $mail->CharSet = 'UTF-8';
  51. // Contenu de l'email
  52. $mail->isHTML(true);
  53. $mail->Subject = "CSE Invent :. ". $subject;
  54. $mail->Body = $template;
  55. if(!debug::isFile("email")){
  56. try {
  57. $mail->send();
  58. return true;
  59. } catch (Exception $e) {
  60. $idSession = session::getId();
  61. if(empty($idSession)){
  62. $idSession = NULL;
  63. }
  64. historique::recRef("script");
  65. historique::add(array(
  66. "idType" => historique::getIdRef("ERROR"),
  67. "idUser" => $idSession,
  68. "idPage" => historique::getIdRef("script"),
  69. "log" => $mail->ErrorInfo
  70. ));
  71. return false;
  72. }
  73. }
  74. return true;
  75. }
  76. /**
  77. * Charge le template d'email spécifié.
  78. *
  79. * @param string $templateName Le nom du template à charger.
  80. * @return string|bool Le contenu du template ou FALSE en cas d'échec.
  81. */
  82. public static function loadTemplate(string $templateName)
  83. {
  84. $templatePath = self::$templateDir . $templateName;
  85. $template = file_get_contents($templatePath);
  86. return $template !== false ? $template : false;
  87. }
  88. /**
  89. * Configure les paramètres de PHPMailer.
  90. *
  91. * @param PHPMailer $mail L'instance de PHPMailer à configurer.
  92. */
  93. private static function configureMailer(PHPMailer $mail)
  94. {
  95. $mail->isSMTP();
  96. $mail->Host = self::$smtpServer;
  97. $mail->SMTPAuth = true;
  98. $mail->Username = self::$username;
  99. $mail->Password = self::$password;
  100. $mail->SMTPSecure = self::$smtpSecure;
  101. $mail->Port = self::$smtpPort;
  102. }
  103. }