Laravel 的郵件功能是什麼
Laravel 的郵件功能建立在 Symfony Mailer 之上,支援 SMTP、Mailgun、Postmark、Resend、Amazon SES、sendmail 等驅動。以往 Laravel 使用的 SwiftMailer 已被廢棄。Laravel 9 以後改用 Symfony Mailer。
config/mail.php 管理。可透過 .env 切換使用的驅動。
建立 Mailable 類別
在 Laravel 中,每封應用程式寄出的信會以「Mailable」類別表達。可用make:mail Artisan 指令建立。
app/Mail/ 目錄。
Mailable 設定
產生的 Mailable 類別會有envelope()、content()、attachments() 3 個方法。
設定寄件者
於envelope() 指定寄件者。
config/mail.php 設定全域寄件者,個別 Mailable 就可省略。
設定郵件內容
在content() 指定 Blade 樣板。建構子中設定為 public 屬性的資料會自動可在樣板中使用。
resources/views/mail/orders/shipped.blade.php):
with 明確傳入資料。此時屬性可設為 protected 或 private。
寄送郵件
用Mail Facade 的 to() 指定收件者,send() 寄送。
mailer():
使用佇列寄送郵件
郵件寄送會影響回應時間,建議透過佇列在背景寄送。ShouldQueue,即使呼叫 send() 也一定會進入佇列。
用 PHP 屬性指定佇列連線與佇列名稱
可用 PHP 屬性直接於 Mailable 上指定佇列連線與名稱,取代on()->queue() 方法鏈,以類別層級宣告式設定。
emails 佇列。
建立 Markdown Mail
使用 Markdown 格式的郵件,可運用 Laravel 提供的漂亮響應式 HTML 樣板。產生 Markdown Mailable
以--markdown 選項產生 Mailable。
content() 使用 markdown 參數:
撰寫 Markdown 樣板
以 Laravel 提供的 Blade 元件撰寫內容。郵件預覽
從路由回傳 Mailable 實例即可在瀏覽器預覽。適合開發期確認。本機開發時的郵件
為避免在本機不小心寄送到正式環境的信箱,可以使用 Mailpit 等工具。Laragon 或 Laravel Herd 皆預設內含 Mailpit。
使用
log 驅動時,郵件內容會記錄到日誌檔。若只是想確認寄信這是最方便的方式。