Email.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace app\common\library;
  3. use PHPMailer\PHPMailer\PHPMailer;
  4. use PHPMailer\PHPMailer\Exception;
  5. class Email
  6. {
  7. private static $instance;
  8. /* @var PHPMailer $mail*/
  9. private $mail;
  10. public function __construct()
  11. {
  12. $mail=new PHPMailer(true);
  13. $config=site_config('email');
  14. $mail->CharSet ="UTF-8";
  15. $mail->SMTPDebug = 0;
  16. $mail->isSMTP();
  17. $mail->Host = $config['smtp_host'];
  18. $mail->SMTPAuth = true;
  19. $mail->Username = $config['smtp_user'];
  20. $mail->Password = $config['smtp_pass'];
  21. $mail->SMTPSecure = $config['verify_type'];
  22. $mail->Port = $config['smtp_port'];
  23. $mail->setFrom($config['send_user']);
  24. $mail->addReplyTo($config['send_user']);
  25. $this->mail=$mail;
  26. }
  27. public static function instance()
  28. {
  29. if (is_null(self::$instance)) {
  30. self::$instance = new self();
  31. }
  32. return self::$instance;
  33. }
  34. public function send(string $to,string $subject,string $body,string $html=null)
  35. {
  36. $this->mail->addAddress($to);
  37. $this->mail->Subject=$subject;
  38. if($html){
  39. $this->mail->isHTML();
  40. $this->mail->Body=$html;
  41. $this->mail->AltBody=$body;
  42. }else{
  43. $this->mail->isHTML(false);
  44. $this->mail->Body=$body;
  45. }
  46. $this->mail->send();
  47. }
  48. }