以下の記事でWordPressでメールを送信する方法について整理しました。
この記事では Amazon SES + WP Mail SMTP プラグインでWordPressからメールの送信をするための設定を行います。
Amazon SES の設定
まずAWSにサインインし、SESのコンソールに移動します。メールの受信は必要ないため、東京リージョンで設定を行います。受信をサポートしているリージョンは少ないため、受信したい場合はどのリージョンで設定すればよいか公式ドキュメントを確認しましょう。
SMTP認証情報を作成する
「Account dashboard」に移動し、「Simple Mail Transfer Protocol (SMTP) settings」から「Create SMTP credentials」をクリックします。

IAMユーザー作成画面に移動するので、作成をクリックします。

IAMユーザーに付与される権限は「ses:SendRawEmail」であり、メールを送信するためのAPIです。
SendRawEmail
https://docs.aws.amazon.com/ses/latest/APIReference/API_SendRawEmail.html
Composes an email message and immediately queues it for sending.(機械翻訳:電子メールメッセージを作成し、すぐに送信のためにキューに入れます。)
認証情報をダウンロードして、他人と共有しない場所に保存します。この認証情報は、メール送信に必要なWordPressのプラグインを設定する際に利用します。

SESのドメイン検証
WordPressで使用しているドメイン名を検証します。
コンソールの「Verified identities」から「Create identity」をクリック。

以下のとおり設定して作成。

「Use a custom MAIL FROM domain」を有効化しているのは、MAIL FROMドメインをAWSのものではなく、WordPressのドメインにしたかったため。
また、「Publish DNS records to Route53」を有効化することでRoute53のホストゾーンに必要なレコードが設定されます。ただし、Route53以外のDNSプロバイダーを利用している場合、手動でレコードを設定する必要があります。
他はデフォルトのままで設定して「Create identity」をクリック。

作成後、検証待ちのステータスになります。



SPF(Sender Policy Framework)とは、メールの送信元ドメイン認証技術です。画像内の説明で「SPFレコード」について記載があるものの、実際に表示されているレコードはMX・TXTレコードのみですが、これは誤りではありません。
SPFレコードはTXTレコードのことを指します。SPFレコードは、そのドメインを送信元としたメールを配送する、正当なメールサーバの情報をまとめたレコードのことで、なりすましを防止できます。TXTレコードにSPFレコードを登録し、送信先のメールサーバが、送信元ドメインのSPFレコード(TXTレコード)を照会・照合することで送信元ドメインの認証を実現しています。
Route53のホストゾーンには、TXT・CNAME・MXレコードが自動的に追加されますが、WordPressのドメインのDNSレコードはLightsailのDNSゾーンで管理しているため、LightsailのDNSゾーンに各レコードを追加する必要があります。

Route53の設定だけで検証済みになるか1日ほど放置しましたが、検証済みにはなりませんでした。LightsailのDNSゾーンに各レコードを作成すると1時間ほどで検証済みになりました。検証には最大で72時間かかるそうですが、実際にはそこまでかからないようです。


送信先メールアドレスの検証
SESのサンドボックスは制限があり、検証済みメールアドレスにしか送信できません。そのため、WordPressで送信したい宛先のメールアドレスを検証します。
私の場合WordPressからメールを送信したいのは、WordPress管理者ユーザーの追加や設定変更時に、WordPressから自分のメールアドレスに送信されたメールを確認しなければならないからです。そのため、このセクションでは自分のメールアドレスを検証します。
以下のようにして「Create identity」をクリック。

指定したメールアドレスにメールが送信されるため、リンクをクリックします。
その後、SESのコンソールで、検証済みの状態になっていれば成功です。

WordPressでWP Mail SMTPプラグインを設定
WordPressの管理画面から、プラグインを有効化します。

ウィザードが開くため、指示に従います(ウィザードで設定しましたが、管理画面からの方が設定しやすいので、管理画面からの設定をお勧めします)。

メーラーに、その他のSMTPを選択します。対象としてSESがありますが、有料でなければ選択できません。その他のSMTPからの設定で支障ないです。

SMTPホスト名の入力を要求されますが、SESに記載されている「SMTP endpoint」の値を記載します。


認証のSMTPユーザー名・パスワードは、認証用のIAMユーザー作成完了時にダウンロードした認証情報を使用します。送信元メールアドレスは、SESで設定したMAIL FROMドメインを使用します。「@」より左は任意の英単語にしました。

以後のセットアップウィザードは、特に設定なく続けます。設定完了後、テストメールを送信します。
送信先は、SESで検証したメールアドレスにします。SESはサンドボックス状態なので、検証したメールアドレスにしか送信できません。

送信先メールアドレスを確認すると、無事受信できていることを確認できました。