VerifyCode.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace App\Servers\Email;
  3. use Illuminate\Bus\Queueable;
  4. use Illuminate\Mail\Mailable;
  5. use Illuminate\Queue\SerializesModels;
  6. use Swift_Mailer;
  7. use Swift_Message;
  8. use Swift_SmtpTransport;
  9. /**
  10. * 邮件验证码发送
  11. * @author 唐远望
  12. * @version 1.0
  13. * @date 2026-03-30
  14. *
  15. */
  16. class VerifyCode extends Mailable
  17. {
  18. use Queueable, SerializesModels;
  19. /**
  20. * 封装SMTP发送邮件的方法
  21. *
  22. * @param string|array $to 收件人邮箱
  23. * @param string $subject 邮件主题
  24. * @param string $body 邮件内容
  25. * @param string|null $from 发件人邮箱,默认为配置中的from地址
  26. * @return int 发送结果
  27. */
  28. public static function sendSmtpEmail($to, $subject, $body, $from = null)
  29. {
  30. // 创建SMTP传输
  31. $transport = new Swift_SmtpTransport(
  32. config('mail.mailers.smtp.host'),
  33. config('mail.mailers.smtp.port')
  34. );
  35. // 设置认证信息
  36. $transport->setUsername(config('mail.mailers.smtp.username'));
  37. $transport->setPassword(config('mail.mailers.smtp.password'));
  38. // 设置加密方式
  39. if (config('mail.mailers.smtp.encryption')) {
  40. $transport->setEncryption(config('mail.mailers.smtp.encryption'));
  41. }
  42. // 创建邮件器
  43. $mailer = new Swift_Mailer($transport);
  44. // 创建邮件消息
  45. $message = new Swift_Message($subject);
  46. $message->setFrom($from ?: config('mail.from.address'));
  47. $message->setTo($to);
  48. $message->setBody($body);
  49. // 发送邮件
  50. return $mailer->send($message);
  51. }
  52. }