Email.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /*
  3. * @Descripttion:
  4. * @version: X3版本
  5. * @Author: likang
  6. * @Date: 2022-06-07 10:16:16
  7. * @LastEditors: sueRimn
  8. * @LastEditTime: 2022-06-09 09:23:55
  9. */
  10. namespace catchAdmin\email\model;
  11. use catcher\base\CatchModel as Model;
  12. use PHPMailer\PHPMailer\PHPMailer;
  13. use PHPMailer\PHPMailer\Exception;
  14. use PHPMailer\PHPMailer\SMTP;
  15. use think\facade\Db;
  16. class Email extends Model
  17. {
  18. // 表名
  19. public $name = 'email';
  20. // 数据库字段映射
  21. public $field = array(
  22. 'id',
  23. // 邮箱
  24. 'email',
  25. // 1 有效 -1 报废
  26. 'status',
  27. // 详情
  28. 'info',
  29. // 创建人ID
  30. 'creator_id',
  31. // 创建时间
  32. 'created_at',
  33. // 更新时间
  34. 'updated_at',
  35. // 软删除
  36. 'deleted_at',
  37. );
  38. public function getStatusAttr()
  39. {
  40. return (string) $this->getData('status');
  41. }
  42. public function setEmail($emails,$title,$body)
  43. {
  44. $where= [];
  45. $where[] = ['type','=','email_config'];
  46. $Host = Db::name("sys_config")->where($where)->where('field','SmtpHost')->value('fieldValue');
  47. $Username = Db::name("sys_config")->where($where)->where('field','SmtpUserName')->value('fieldValue');
  48. $Password = Db::name("sys_config")->where($where)->where('field','SmtpPassword')->value('fieldValue');
  49. $SMTPSecure = Db::name("sys_config")->where($where)->where('field','SMTPSecure')->value('fieldValue');
  50. $Port =Db::name("sys_config")->where($where)->where('field','SmtpPort')->value('fieldValue');
  51. $Name = Db::name("sys_config")->where($where)->where('field','Name')->value('fieldValue');
  52. $mail = new PHPMailer(true);
  53. try {
  54. //服务器配置
  55. $mail->CharSet ="UTF-8"; //设定邮件编码
  56. $mail->SMTPDebug = 0; // 调试模式输出
  57. $mail->isSMTP(); // 使用SMTP
  58. $mail->Host = trim($Host); // SMTP服务器
  59. $mail->SMTPAuth = true; // 允许 SMTP 认证
  60. $mail->Username = trim($Username); // SMTP 用户名 即邮箱的用户名
  61. $mail->Password = trim($Password); // SMTP 密码 部分邮箱是授权码(例如163邮箱)
  62. $mail->SMTPSecure = trim($SMTPSecure); // 允许 TLS 或者ssl协议
  63. $mail->Port = trim($Port); // 服务器端口 25 或者465 具体要看邮箱服务器支持
  64. $mail->setFrom(trim($Username),$Name); //发件人
  65. //$mail->addAddress('aaaa@126.com', 'Joe'); // 收件人
  66. //$mail->addAddress('ellen@example.com'); // 可添加多个收件人
  67. //$mail->addReplyTo('xxxx@163.com', 'info'); //回复的时候回复给哪个邮箱 建议和发件人一致
  68. //$mail->addCC('cc@example.com'); //抄送
  69. //$mail->addBCC('bcc@example.com'); //密送
  70. foreach($emails as $item)
  71. {
  72. $mail->addAddress($item);
  73. }
  74. //发送附件
  75. // $mail->addAttachment('../xy.zip'); // 添加附件
  76. // $mail->addAttachment('../thumb-1.jpg', 'new.jpg'); // 发送附件并且重命名
  77. $mail->isHTML(true); // 是否以HTML文档格式发送 发送后客户端可直接显示对应HTML内容
  78. $mail->Subject = $title;
  79. $mail->Body = $body;
  80. $mail->AltBody = '如果邮件客户端不支持HTML则显示此内容';
  81. $mail->send();
  82. echo '邮件发送成功';
  83. } catch (Exception $e) {
  84. echo '邮件发送失败: ', $mail->ErrorInfo;
  85. }
  86. }
  87. }