| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <?php
- namespace App\Mail;
- use Illuminate\Bus\Queueable;
- use Illuminate\Mail\Mailable;
- use Illuminate\Mail\Mailables\Content;
- use Illuminate\Mail\Mailables\Envelope;
- use Illuminate\Queue\SerializesModels;
- /**
- * Class InviteMail
- *
- * 用于发送邀请注册链接的邮件。
- * 支持多语言模板,并可自定义 Dashboard 基础地址。
- */
- class InviteMail extends Mailable
- {
- use Queueable, SerializesModels;
- /**
- * 邀请唯一标识(用于生成注册链接)
- */
- public string $uuid;
- /**
- * 邮件语言(用于选择 view 模板)
- * 例如:en、zh-Hans、zh-Hant
- */
- public string $lang;
- /**
- * Dashboard 基础访问地址
- */
- public string $dashboardUrl;
- /**
- * Create a new message instance.
- *
- * @param string $uuid 邀请 UUID
- * @param string $lang 邮件语言(默认 en)
- * @param string|null $dashboardUrl Dashboard 基础地址(可选)
- */
- public function __construct(
- string $uuid,
- string $lang = 'en',
- ?string $dashboardUrl = null
- ) {
- $this->uuid = $uuid;
- $this->lang = $lang;
- // 如果未传入 Dashboard 地址,则使用配置项
- $this->dashboardUrl = $dashboardUrl
- ?: config('mint.server.dashboard_base_path');
- }
- /**
- * Get the message envelope.
- *
- * 用于定义邮件头信息(如 subject、from、reply-to 等)。
- */
- public function envelope(): Envelope
- {
- return new Envelope(
- subject: 'Wikipali Invite Email',
- );
- }
- /**
- * Get the message content definition.
- *
- * 用于定义邮件内容视图及其绑定的数据。
- */
- public function content(): Content
- {
- return new Content(
- view: 'emails.invite.' . $this->lang,
- with: [
- // 邀请注册链接
- 'url' => $this->dashboardUrl
- . '/anonymous/users/sign-up/'
- . $this->uuid,
- ],
- );
- }
- }
|