在上一篇 AWS – Simple Email Service 及 Synology NAS 上的 DNS 與 Mail Server 設定 文章中,申請好 AWS SES 後,讓 Laravel 可以使用 AWS SES 來發送信件。

根據 Laravel 官方文件說明中提到,若需要使用 SES Driver 則必須先安裝 aws/aws-sdk-php 套件。

composer require aws/aws-sdk-php

安裝完套件後,需修改 config\mail.php 、config\service.php 及 .env 這幾個檔案,基本上都使用 env() 的設定,只要修改 .env 即可。但由於我選擇的主要區域 ap-east-1 (香港) 並不提供 SES 服務,只好選用 ap-southeast-1 (新加坡),所以需要對 config\service.php 作一些修改。

config\mail.php

'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),

config\service.php

'ses' => [
    'key' => env('AWS_SES_ACCESS_KEY_ID'),
    'secret' => env('AWS_SES_SECRET_ACCESS_KEY'),
    'region' => env('AWS_SES_DEFAULT_REGION'),
],

.env

MAIL_DRIVER=ses
MAIL_HOST=email.ap-southeast-1.amazonaws.com
MAIL_PORT=587
MAIL_USERNAME=建立SES服務取得的帳號
MAIL_PASSWORD=建立SES服務取得的密碼
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=填寫經過驗證的 Domain 帳號 (ex: service@rvt.idv.tw)
MAIL_FROM_NAME="${APP_NAME}"

AWS_SES_ACCESS_KEY_ID=到 IAM 取得
AWS_SES_SECRET_ACCESS_KEY=到 IAM 取得
AWS_SES_DEFAULT_REGION=ap-southeast-1

設定完成後,就可以使用了,相當簡單。

由於尚未提交 SES 用途且通過審核,帳號處於 SanBox 狀態,若發送給非驗證的帳號就會出現下面的錯誤訊息。

最後修改日期: 2020 年 11 月 27 日