2
0

EmailCertificationMail.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace App\Mail\V3;
  3. use Illuminate\Bus\Queueable;
  4. use Illuminate\Mail\Mailable;
  5. use Illuminate\Mail\Mailables\Content;
  6. use Illuminate\Mail\Mailables\Envelope;
  7. use Illuminate\Queue\SerializesModels;
  8. /**
  9. * v3 的注册验证码邮件。
  10. *
  11. * 与 v2 的 `App\Mail\EmailCertif` 的区别:验证码由调用方生成并保管,邮件只负责送达。
  12. * v2 在 `build()` 里生成验证码并写 Cache,渲染一次邮件就换一个码。
  13. * 邮件模板沿用 `emails.certification.*`。
  14. */
  15. class EmailCertificationMail extends Mailable
  16. {
  17. use Queueable, SerializesModels;
  18. /**
  19. * @param string $code 明文验证码
  20. * @param string $lang 模板语言,调用方保证是 `emails.certification.*` 里存在的那几个
  21. */
  22. public function __construct(
  23. public string $code,
  24. public string $lang,
  25. ) {}
  26. public function envelope(): Envelope
  27. {
  28. return new Envelope(
  29. subject: __('auth.email_certification_subject', [], $this->lang),
  30. );
  31. }
  32. public function content(): Content
  33. {
  34. return new Content(
  35. view: 'emails.certification.'.$this->lang,
  36. with: ['code' => $this->code],
  37. );
  38. }
  39. }