如何使用 Lumen 寄信 Lumen Mail example

由於 Lumen 沒有內建 Mail function
網路上找到整合 Mail 的方式大概有下面兩種
我實作的是第一種
第二種主要是把 Lumen 被拔掉的功能給加回來
因為不需要其他的功能

這邊的環境是 Lumen 5.5.2

1. 需要先安裝 illuminate/mail 套件
不過不能只安裝 illuminate/mail 會出錯,要把相依的套件一起裝起
這部分別篇文章有介紹不贅述,請參考這邊

2. 然後在 bootstrap/app.php 裡面加入這段
$app->register(\Illuminate\Mail\MailServiceProvider::class);
然後把這行前面註解移除
$app->withFacades();
3. 安裝這個套件 phanan's cascading config
composer require phanan/cascading-config: "~2.0"
把下面這兩行加入 bootstrap/app.php 裡面
$app->register(PhanAn\CascadingConfig\CascadingConfigServiceProvider::class);
$app->configure('mail');

4. 在 config 資料夾中新增一個 mail.php 檔案
將下方的程式複製到 mail.php 中

return array(
  "driver" => "smtp",
  "host" => "smtp.gmail.com",
  "port" => 465,
  "from" => array(
      "address" => "account@gmail.com",
      "name" => "Mailbox Name"
  ),
  "username" => "account@gmail.com",
  "password" => "XXXXXOOOOO",
  "sendmail" => "/usr/sbin/sendmail -bs",
  "pretend" => false,
  "encryption" => "ssl"
);
這邊使用 gmail 信箱當範例,如果遇到認證問題請參考這邊設定

以上已經完成環境設定部分

接下來有個簡單範例供參考

由於 Lumen 沒有 view 的部分
所以無法使用 Mail::send 方式寄送

純文字
use Illuminate\Support\Facades\Mail; 
Mail::raw('Body Message', function($message)
{
    $message->to('someone gmail.com')->subject('Subject');
});

HTML 版
use Illuminate\Support\Facades\Mail; 
Mail::raw('', function($message)
{
    $message->to('someone@gmail.com')->subject('Subject');
    $message->setBody('
test12345678
', 'text/html');
});


參考文件:
Lumen 5.3 send email
Lumen 5.4 with Laravel Mailable

Comments

Popular posts from this blog

CentOS7 如何新增/移除 Rich Rule for firewalld

mac 安裝 mtr

如何設定 SSL VPN 分割通道 on Fortigate 80C