Ayden Lin

Web Developer — 程式設計師

Laravel 5 Mail - 使用 Gmail 寄信 (適用Laravel 5.3~5.7)

Ayden Lin
Ayden Lin
Published in
4 min readSep 28, 2018

--

使用 Laravel 5.3、Laravel 5.4、Laravel 5.5、Laravel 5.6、Laravel 5.7 寄信,Mail 相對於 Laravel 5.2 (或更先前的版本)有很明顯的差異,Laravel 5.3 版本開始使用 Mailables class 來將邏輯、資料的部分整理在一起,讓寄信變得更簡單、簡潔。

回顧一下從 Larvel 5.2版(或更之前)寄送的方式如下:
註:舊的方式一樣能在新版繼續使用

Mail::send('emails.welcome', $data, function ($message) {
$message->from('us@example.com', 'Laravel');
$message->to('foo@example.com');
$message->cc('bar@example.com', $name = null);
});

Laravel 5.3 ~ 5.7 已經可以採這種方式寄信,透過 send/queue/later,發一封 Mail 只會對應一個 Mailables class,如:->send(new OrderShipped($order))

Mail::to($request->user())
->cc($moreUsers)
->bcc($evenMoreUsers)
->send(new OrderShipped($order));

趕緊來看看 "Laravel 寄信" 的另一種方式

Step1. 需安裝 Guzzle HTTP library

這是基於 SwiftMailer 開發的,支援 Mailgun、Mandril、SMTP、Amazon SES等等

composer require guzzlehttp/guzzle

Step2. Laravel 5 設定 .env ( gmail )

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=gmail帳號
MAIL_PASSWORD=gmail密碼
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=gmail帳號
MAIL_FROM_NAME=顯示的名稱

Step3. 使用 gmail 寄信,需設定低安全性應用程式存取權

設定網址
https://myaccount.google.com/lesssecureapps

Step4. 使用 make:mail [名稱] 來生成 Mailable class

php artisan make:mail OrderShipped

執行完成後,你能在 app/Mail/ 找到 OrderShipped.php,打開後如下

可於 public function build(){...} 裡,調用 from, subject, view 與 attach 方法來配置 Mail資料,如下:
(1) 假設我要寄送訂單運送資訊,先在 __construct 帶入 Order $order
(2) 在 build 裡面配置一些 mail 設定,以及帶入一些值->with(['orderName' => $this->order->name]) )來提供「shipped.blade.php」使用

Step5. 建立 OrderController 來寄信

很簡單的配置 to() , cc(), bcc()…等即可寄信

就不需要再處理blade、邏輯與資料的部分,因為你已經於「OrderShipped.php (Mailable class)」、「shipped.blade.php」 完成了(分離),可以往上滑再看一下~

是不是很簡單就能上手呢~

簡單整理以下幾種寄信的方式

更詳細完整的資料,可以到官網查看

另外,如果你對 GIT GUI 有興趣的話,可以延生閱讀這篇「Git GUI- GitKraken 介紹」文章,來提升您的工作效率!

--

--

No responses yet