渡米生活。(日記)

渡米生活。本家から切り離しました。あまり渡米生活に関係のないプログラムネタや音楽ネタなど。

Contact form7 + WP-Mail-SMTP + gmailの組み合わせがいつの間にか動かなくなっていた件の対策

WordpressのメールフォームにContact Form 7を使っているのですが、海外で運用しているサーバで問題が発生。

まあ、安いホスティングサーバを使っているので、web サーバにメールサーバが利用可能なのは良いのだけど、メールサーバがスパムのブラックリストに登録されてしまっていて、折角のドメインメールがほとんどの受信者に跳ね返されてしまうのです。
つまり、ドメインメール持っていても、受信専用。送信にはほとんど使えない、という事態に。

というわけで、Contact Form7から送信するアドレスも、それ専用に取得したgmailを使うことになりました。

そのままでは使えないのだけど、wp_mail()関数の振る舞いを変えるプラグインはいくつか出ていて、それを使えば別のサーバからメールを送信させることができます。

とりあえず、うちでは、WP-Mail-SMTPを使っていました。
これに、gmailのログイン情報を登録して、MailerオプションをUse the PHP mail() function to send emailsにしておけば、普通に使えていたのですが……

2014/8/15のgmailSMTPセキュリティポリシーの改訂の影響か、いつのまにかメール送信で失敗するようになっていました。
もう多分何ヶ月もこの状態だったのでは。。

というわけで、以下対処方法。

1)WP-Mail-SMTPのMailerオプションを、Send all WordPress emails via SMTPに変更。
2)From Emailをgmailのアドレスにする。
3)この状態で、一度テストメールを配信。そうすると、テストは失敗するが、gmailから「Google アカウント: ログイン試行をブロックしました」というタイトルのメールが送られてくる。
4)メールを開き、中に書かれているリンク(https://www.google.com/settings/security/lesssecureapps)をクリックし、WP-Mail-SMTPで使うgmailのアカウントでログイン
5)「安全性の低いアプリのアクセス」を「有効」に設定
6)もう一回テストメールを送信して、動作確認

これで、なんとか元通りに動きました。
しかし、gmailが更にセキュリティ制限を強くしてきたら、どうするかな。。コレ。。

※なお、これでセキュリティが多少甘くなるので、パスワードは乱数エンジンで作成するなどして、強固なものに変えておくこと。