私たちはベトナムオフショア開発会社でAWS開発技術力とコスト対効果の高いシステム開発を提供しています。AWS開発実績が多いですが、今回は初心者向けAWSメール配信開発を紹介します。
はじめに
最近AWSサービスを使用して開発者が多いですが、はじめて開発者もいますので、色々分からないことがありますが、本日簡単にメール配信するのため、開発方法を共有したいと思います。まずAmazon SES(Simple Email Service)は、信頼性が高くスケーラブルなメール送信サービスです。今回の記事では、Laravel PHP フレームワークを使用して、Amazon SES サービスを利用したメール配信の実装手順を初心者向けに紹介します。Amazon SES を使用することで、メールの信頼性向上やスパムメールのフィルタリングが可能となります。
手順
Amazon SESの設定
最初にAWS SESサービスを使用するためにはAWSアカウントが必要です。この記事ではAWSアカウントの作成方法について下記のリンクをご参照ください。
https://beginaws.awsstudygroup.com/vi/1-account-setup/1-create-new-aws-account/
AWSアカウントを作成した後でAWSサービスを使用するのため、AWSページのログインページにログインする。

リージョンを選択する。 ※注意:現在はAWS SESサービスを利用できるリージョンはN.Virginia 、Oregon、Irelandしかないです。最近、東京リジョン対応があり、SESサービスを利用いただけるようになりました。
これからSMTP Credentialを作成する必要があります。 下記の順番でメニューから選択する。
AWS SES Services → Account dashboard → Create SMTP credentials

その時にIAMユーザー作成画面が表示されます。
ユーザー名を入力して作成ボタンを押下とIAMユーザーを作成します。

SMTPユーザーとパスワードが表示されますので、その情報を大切に保管してください。
下記の画面でDownload Credentialsボタンも押下するとログイン情報を保存する。

AWS SES Services → Account dashboardへ遷移する。

ログイン情報を基づいてアプリケーションからメールへ接続できます。 ただし、メール誤送信防止のため、AWS SESのデフォルトはSandBoxにありますが、外にメールを送信できない。メール配信できるように解除する必要があります。
案①(本番稼働用):AWSへ依頼する。
案②(テスト用):メールドメインを追加して認証を行う。
下記の流れで選択していただければメール追加できます。
AWS SES Services → Verified Identities → Create Identity

下記の画面が表示されます。

認証したいメールアドレスを入力してCreate Identityを押下すると、一覧画面へ戻って認証中というステータスになります。

入力したメールアドレスへログインするとAmazonから下記の確認メールが届きます。

メールを開いて、認証リンクをクリックするとメール認証が完了となります。
下記のイメージサンプルを参照してください。

メール認証が完了したら、AWSで下記の画面が表示されます。

AWS SESでのVerified Identities画面からメール認証ステータスを確認できます。下記の画像をご参照ください。
テストのため、認証されたメールアドレスへは毎日200通まで送信できます。
Sandboxでの設定が完了すると、1日につき最大で5万通まで送信できるようになります。 設定した後でテストメールを送信してみます。

テンプレートとメッセージのカスタマイズ
下記の手順でテストメールを設定します。
①Formattedを選択する。
②Scenario枠でCustomを選択する。
③Custom Recipientテキストに認証したメールを入力する。
④Subjectテキストでテスト入力する。
⑤メール内容ボックスにテスト内容を入力する。
⑥SendMailボタンを押下するとメールを送信する。

下記の画面が表示されます。メール送信確認できました。

認証したメールへテストメールが届いたかどうか確認します。設定した配信先のメールを確認する。
SENDMAILの最適化
Laravel内でSENDMAILを最適化するための手法や、Amazon SESを使って送信する際の効果的なコーディングについて具体例を挙げながら解説します。
1. MAIL_DRIVER=smtp
2. MAIL_HOST=host
3. MAIL_PORT=587
4. MAIL_USERNAME=username
5. MAIL_PASSWORD=password
6. MAIL_ENCRYPTION=tls
7. MAIL_FROM_ADDRESS=email_verify
8. MAIL_FROM_NAME=from_name
routes/web.phpでルートを追加する。
Route::get('/test-sendmail', 'SendmailController@send');
次はcontroller とSendを作成する。
