WordPressの代わりにGoogleの力を借りてメールを送る2つの方法とそれらの違い

eyecatch

tl;dl

  • WordPressにはメールを送る仕組みがあるが、スパムメール判定で送られなかったり、サーバーにメールを送るための設定が適切にされていないことから、割と送れない問題が起きる。
  • それでもメールを送る方法はあり、その一つはWP Mail SMTPプラグイン。
  • プラグインを使ってGmail経由でメールを送る方法はあって、1つは簡単に設定できるけどセキュリティが弱めのもの、もう1つは少しだけ面倒だけどセキュリティが強めのもの。

恐らくこの記事を見ている方は、とりあえずWordPressからメールが届かない人でしょう。
私もその1人で、かつ解決までに散々調べ倒しました。

結論から言うと、解決できました。
今回はその方法を紹介しましょう。

問題

「WordPress メール 送れない」
「WordPress メール 届かない」
こんな風に検索すると、色々サイトが出てきます。
私もこの問題でハマりました。

で、結局解決したのでブログにしています。
ただ、解決法は他のブログに結構乗っていますので、この記事ではなぜその問題が発生するのかに焦点を絞って解説していきます。

私の場合は、ダッシュボード>一般設定のサイトのメールアドレスとダッシュボード>ユーザーのuserのメールアドレスを変更しようとしても、ずっと「」と表示されるだけでメールがこないという問題でした。
日本や海外のファーラムでもわりと話題に上がっていて、こうすれば解決するというやり方をいくつか見てはいました。
ただ、それらをやってもどうも治らないし、あとなぜそうすべきなのかが書いていないので、何でそれをしないといけないのかわからなかったため結局自分で試行錯誤の旅に出ました。
管理者メールだけでなく、WordPressのメールに関することならほとんどの人が当てはまるかと思います。

対策

原因はさほど興味ない方のために先に対策を記述します。
とりあえず、WordPressプラグインのWP Mail SMTPを使います。はい、どこのサイトでもよく見ますね。
別に宣伝料もらってないですよ。

インストールした上で、Gmailを使ってメールを送る方法を2つ紹介します。
・GmailAPIを使わない簡単だけど、セキュリティが甘めな方法
・GmailAPIを使うやや面倒だけど、セキュリティ固めな方法

「WP Mail SMTP gmail」で検索すると出てくる2つの方法です。
これが検索結果に混ざり合って非常にわかりにくかった。

GmailAPIを使わない簡単だけど、セキュリティが甘めな方法



1つはこの記事です。
こっちはちょっとWP Mail SMTPの設定画面を触るだけで終わります。

GmailAPIを使うけど、セキュリティ固めな方法

もう一つは、この方法です。
こちらはGoogleのGmailAPIをOAuth経由で叩くもので、やや面倒ですがセキュリティ的によろしいらしいのでこちらをおすすめします。
このサイトもこの方法でメールを送信しています。

何が違うか詳しく

方法2は方法1と比べてセキュリティが向上します。というのは、WP Mail SMTPの配信元のドキュメントに記述がありました。

Why Use the WP Mail SMTP Plugin?

The main benefit of using the WP Mail SMTP plugin is that it lets you send WordPress emails securely using your Gmail or G Suite account without requiring to enable less secure apps in your account.

In addition, unlike many other SMTP options, you won’t need to enter your Gmail username and password in your WordPress dashboard where other site users can see them. By using this method, you’ll help to keep your WordPress site secure.

翻訳すると、

  • 安全性の低いアプリケーションにあなたのGoogleログイン情報を伝えなくて済む。
  • WordPress上にGoogleログイン情報を置かないので、他のユーザーにそれを見られてしまう危険性がない。

とのことです。
詳しくはOAuthの仕組みを調べてもらったほうがいいんですか、要はWordPressからの情報漏えいの危険をなるだけ回避できるようです。
設定に時間がかかるくらいのデメリットしかないように見えるので、私はこちらを採用しました。

原因

そもそもワードプレスからメールを送信できない理由は、いくつかあります。

  • WordPressから送ったメールがスパム扱いされて破棄される。
  • ホスティング会社のサーバーにメールを送る機能があるが、WordPress用に設定されていない。

これらも2つとも、WP Mail SMTPの公式ドキュメントにに記載がありました。
引用して、翻訳します。

WHAT IS SMTP?
SMTP (Simple Mail Transfer Protocol) is an industry standard for sending emails. SMTP helps increase email deliverability by using proper authentication.

Popular email clients like Gmail, Yahoo, Outlook, etc are constantly improving their services to reduce email spam. One of the things their spam tools look for is whether an email is originating from the location it claims to be originating from.

If the proper authentication isn’t there, then the emails either go in your SPAM folder or worst not get delivered at all.

This is a problem for a lot of WordPress sites because by default, WordPress uses the PHP mail function to send emails generated by WordPress or any contact form plugin like WPForms.

The issue is that most WordPress hosting companies don’t have their servers properly configured for sending PHP emails.

The combination of two causes your WordPress emails to not get delivered.

Google翻訳そのままです。

Gmail、Yahoo、Outlookなどの人気のあるメールクライアントは、メールスパムを減らすためにサービスを絶えず改善しています。スパムツールが探しているものの1つは、電子メールが発信元であると主張している場所から発信されているかどうかです。

適切な認証がない場合、電子メールはあなたのSPAMフォルダに入れられるか、最悪の場合、まったく配信されません。

これは、多くのWordPressサイトにとって問題です。なぜなら、WordPressはPHPのメール機能を使ってWordPressやWPFormsのようなコンタクトフォームのプラグインによって生成された電子メールを送信するからです。

問題は、ほとんどのWordPressホスティング会社が、PHPメールを送信するために適切に設定されたサーバーを持っていないことです。

2つの組み合わせにより、WordPressの電子メールが配信されなくなります。

例えば前者は、aiueo@amail.comが送信元ってメールに書いてあるけど、実際にはぜんぜん違うhogehoge@aho.comってサーバーからじゃないか!スパムに違いない!って感じでメールが破棄されることですね。

後者は、ここで私が特に詰まったんですが、サーバー側でそもそも最初はメールを送れない設定になっていることです。
いや、そんな馬鹿なとお思いでしょう?
Webシステムのエンジニアならみんな知っているあのAWSのEC2がこういう設定になっています。
私も、はじめはWordPressのせいに違いないと何日も調べていたんですが、原因の切り分けをしているうちにおかしいことに気づきました。
ただSESとか使えばいけるのかもしれませんね。よくわかんね。

ここで紹介しているように、EC2Instanceからメールを送るにはAmazonに「メール送らせてくれ」と申請しないとダメなんですね。

Amazon EC2 Eメール送信ベストプラクティス

私は申請しましたが、結局上で紹介した方法で解決したので、あまり意味ありませんでした。
なので企業案件などでどうしてもEC2のサーバーからメールを送信する必要があるときには使えばいいと思います。

おわりに

これ以上WordPressのクソメールで苦しむ人が出ませんように。


GUTE-URLS

Wordpress is loading infos from makicebu

Please wait for API server guteurls.de to collect data from
makicebu.com/wp-mail-smtp-g...

user

デフォルトのユーザ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です