WordPressからのメール送信

WordPressからのメール送信

困ったこと

WordPressからメールを送られて来ない。その為、パスワード忘れてしまった時の再発行機能が使えない、管理者宛てのメールも来ないなどで悪影響が出そうだったので対応しました。

問題

WordPressのログイン画面から新しいパスワードを取得しようとしたところ、「メールを送信できませんでした。ホスティングサービス上でmail()関数が無効になっている可能性があります。」というメッセージが表示されました。また、WordPressの管理画面の一般設定にあるメールアドレスを変更すると「変更したメールアドレスへの管理者メールアドレス変更が承認待ち中です。」と表示されているがメールは来ませんでした。理由はWordPressでは、php mailという仕組みを使ってメールを送信している為、Wordpressが稼働しているサーバーを通じてメールを送信する。よって、環境(サーバ)によってはメールが送られたり送信数制限があって送れたり、送れなかったり、全く送れなかったりするようです。自分の場合はAWSの為そのままでは送れなかったことになります。

解決する為に行ったこと

WordPressの通知メールをSMTP経由で送信する(WP Mail SMTP / Gmail / Amazon SES) – F.Ko-Jiの「一秒後は未来」を参考にWP Mail SMTP というプラグインを使い外部の SMTP サーバー経由(Gmail や Amazon SES など)で送信できるようにしました。今回はGmailを使用しました。Amazon SESという選択肢もあったが、Gmailのほうが簡単であろうと思い安易にGmail選択しました。結果としてはAmazon SESを使うべきでしたが、、、。Gmailの仕組みが変わっていた為、ContactForm7でGmailのSMTPサーバーを利用してメールを送信する方法を元にGmailAPIを使用しました。GmailAPIはあまり使われていないのか情報が少ない印象をうけました。尚、GmailAPIとはGoogleが提供するGgailを使用しなにかをする時に便利なAPI(部品)でありGoogleApisの1つである。

まとめ

Amazon SESを使うべきだったと考えられます。というのも本BlogはAWS上で動いているのでAWSとの相性のほうがよいであろうと思うからです。。。今度変更します。しかし、Google様の仕組みは難しい。GCP(グーグルクラウドプラットフォーム)、GoogleApisの関係性がいろいろ調べたがよくわからなかった。調べていると昔、プライベートでJavaが置けるフリーのサーバが見つからず使用したことがあるGoogle App Engineというキーワードに遭遇し非常に懐かしかった。あと、WordPressは流石に枯れている技術だけあって非常に有能ですね。

別件ですが、送信元がGmailで日や時間によってメールが来ない等であれば下記が理由の可能性がある為注意が必要なことを知りました。

G Suite での Gmail の送信に関する制限事項