【AWS】SESを使ってWordPressからメールを送信する

この記事は現役ウェブディベロッパーがわかりやすさにこだわって作成しました

必要な環境

  • Amazon SES
    ※新規アカウントには制限ありますので外部にメール送るには申請が必要です
  • WordPress

SESで外部にメールを送信するためには、AmazonにSESの制限緩和申請が必要です。

AWSの公式ドキュメントに、「SESには不正使用や悪用を防止し、送信者としての評価を保つため新しい Amazon SES アカウントには一定の制限が適用されます」と記載があり、すべての新しいアカウントには以下のような制限が課せれれています。

すべての新しいアカウントが Amazon SES サンドボックスに配置されます。アカウントはサンドボックスにありますが、Amazon SES のすべての機能を使用することができます。ただし、アカウントがサンドボックスにある場合、アカウントに次の制限が適用されます。

E メールの送信は、検証済み E メールアドレスおよびドメイン、または Amazon SES メールボックスシミュレーターに制限されます。

最大で 24 時間あたり 200 メッセージを送信できます。

最大で 1 秒あたり 1 メッセージを送信できます。

amazon AWS SES

この制限を解除するためにはAmazon SESに緩和申請を依頼する必要があります。

Amazon SES サンドボックス外への移動 - Amazon Simple Email Service
アカウントを Amazon SES サンドボックス外に移動し、送信クォータを引き上げます。

SESのSMTP情報を取得

  • SMTP SereverにはコントロールパネルのSMTP Endpointを設定します
  • SES用IAMアカウントを作成します

画面右下のCREATEボタンをクリックするとIAMキーが生成されます

作成したSMTP情報をメモします。ダウンロードすることもできます

WordPressにSMTP設定をする

WordPressのSMTP設定は、Wordpress公式ドキュメントに記載されている方法でコードを書くか、または既存のプラグインを利用する方法の二通りの方法があります。今回はWordpressで広く利用されているプラグインWP Mail SMTP を利用してSMTP設定を行います。

プラグインなしで送信用メールサーバー(SMTP)設定を行う方法

送信用メールサーバー(SMTP)設定をプラグインを使わずにコードを記述することで行いたい場合はこちらの記事を参照ください。

WP Mail SMTP by WPForms プラグインを使う

このプラグインは、インストール数・評価数がともに高く、アップデートも頻繁にされているので、業務でも使用しています。SMTP以外にも様々なインタフェイスを利用できるので将来的にSMTPからSENDGRIDなどのAPIに変えたい場合でもそのまま使えます。

Amazon SES SMTP インターフェースの設定をする

プラグインの有効化をすると、左メニューに WP Mail SMTP が出てくるのでクリックをします。一般タブを設定していきます。

WP Mail SMTP

送信時のメール設定は慎重におこなってください。

メーラーは Amazon SES ではなく Other SMTP を選択します。

WP Mail SMTP メーラー

Other SMTP のところを以下のように設定をします。 SMTPホストには前章で取得したエンドポイントを設定します。SMTP のユーザ名とパスワードは、おなじく前章で取得した SMTP のユーザ名とパスワードを入力します。

下にスクロールをして「設定を保存」ボタンをクリックします。

テストメールを送信する

このプラグインにはテストメールを送信する機能がありますので、送信テストをして確認します。「Email Test」タブをクリックします。次に「Send To」に受信できるメールアドレスを入力して「Send Email」をクリックします。

メールが送信されれば成功です。

SMTP ユーザ名とパスワードを wp-config.php に保存する

「一般」タブのパスワードの下に英文でパスワードが暗号化されずに保存されている旨の記載があります。

The password will be stored in plain text. For improved security, we highly recommend using your site’s WordPress configuration file to set your password.

データベース上にSMTP情報が暗号化されずに存在するのは良くないので、 wp-config.php に保存するようにするのがよいでしょう。wp-config.php に以下の定数を追記します。WPMS_SMTP_USERWPMS_SMTP_PASS を以下のように設定します。

define('WPMS_ON', true);
define('WPMS_SMTP_USER', 'XXXXXXXXXXXXXXXX');
define('WPMS_SMTP_PASS', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

正しく設定されると管理画面から SMTP Username と SMTP Password を空欄にして保存します。以降、画面からユーザ名とパスワードが入力できなくなります。

再度テストメールを送信し、送信が成功することを確認します。

まとめ

AWS SESを使ってWordpressからメールを送信することができるようになりました。

PHP/Javascript/WORDPRESS案件全般承ります

この記事についてのご質問またはお困りのことがございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました