ITサポート
WooCommerce、WordPress、メール配信で困ったことと、解決策を紹介
誰かが同じような目にあったら役立つ情報
誰かが同じような目にあったら役立つ情報
toiee.jp の構築、リリースに置いて「困ったこと」と「対策」を説明します。かなり特殊なことですが、それ故に同じ問題を抱えた人に役立つと思って記します
- 更新 2018/5/2 SendGridの設定がわかりづらかったことがあったので、追記しました
“A “Sorry, we’re closed” sign hanging in a store window” by Tim Mossholder on Unsplash
詳細
Safari (Mac, iOS) では、問題なく WooCommerce のパスワードリセット画面は動作します。ところが、Google Chrome、Firefox では動きませでした。
正しい例
上記のように「パスワードの脆弱性」を知らせて、普通以上になれば「保存」ボタンが押せるようになる仕組みです。これが動作せず、どれだけパスワードをいれても、「保存ボタンが無効のまま」でした。
現象
Google Chrome、Firefox の開発者ツールでコンソールのエラーをチェックしました。すると、「一行目でエラー」となっていました。しかも、javascriptエラーです。
<!doctype html> よりも前に、javascriptエラー?という状態になっていました。一通り、読み込んでいる javascript をチェックすると、cloudflare の rocketloader.js ファイルを読み込んでいました。
原因
CloudFlare が提供する「Javascriptの高速化」の仕組みが、Safari以外では、WooCommerceのJavascript とバッティングすることがわかりました。この機能を Off (元々はautomatic)にすることで解決しました。
WooCommerce + CloudFlare + Rocket Loader で パスワードリセットが動作しなくなることがあります。Rokcet Loader を Off することで解決しました。
問題2 : メールが一切届かない人がいる
現状
既存のユーザーを事前にインポートしていました。その方々が、パスワードリセットをリクエストすると、自動でメールが送られます。このメールが一切届かない。迷惑メールボックスにすら入らない問題がありました。
原因
これはすぐに解決しました。調査方法は以下の通りです。
- サーバーのメールログをチェック ( /var/log/maillog )
- メールログを理解する
ログを見ると、 poor reputation で rejected された と書かれています。これによって、相手の受信箱の前に、 secure.ne.jp サーバーにて拒否されたことがわかります。
toiee.jp は、 GMO の VPS を契約しているのですが、この VPS の IPアドレスがブラックリストに入っているのだと思われます。
ブラックリストにはいる原因は、過去に誰かがこのIPアドレスで「スパム行為を行なった」ことが原因です。故意なのか、ハッキングされた結果なのかわかりませんが、GMO の VPS の IPアドレスがブラックリストでした。
この問題を解決するには、GMO にお願いして、 スパムフィルタを提供している( secure.ne.jp )プロバイダにお願いをする必要があります。これは、時間がかかりますし、やってくれないでしょう(GMOは特に)。
解決策(外部メール送信サーバーを使う)
そこで、サーバー上から送るのではく、メール配信サービスを使うことが簡単で、おすすめです。
今回は、SendGrid を使いました。(SendGrid の申請には、2、3日かかりますので、事前に申請しておくと良いでしょう)
12,000通/月 までは無料で送信できます。toiee.jp は、メールマガジンは、Mailerlite で送信しているので、おそらく無料で収まるのではないかと思います。
WordPressで SendGridを使うには、プラグインを導入するだけでOKです。
なお、WordPress以外のメールも「スパムメール」になってしまいます。そこで、サーバーのメール送信設定を変更する必要があります。toiee Labは、VPSを使っているので、自分で変更しました(Postfix)。
方法は、以下のページです。
ちなみに、ここでの具体例は「SendGridアカウント」を入力する例ですが、危険なので「APIキー」が良いと思います。以下のように、 yourSendGridUsername
を apikey
と書く必要があります。個人的には、これがわかりづらく・・・間違いました。
APIキーを使う場合は、api:キー とする
WordPress を使ってショッピングサイトや会員サイトを作る場合、自動返信メールなどが届かないと問題になります。
WordPressは、 SendGrid や Mandrill や Mailgun などを簡単に導入できます。上記のメール配信サービスを利用することを、強くお勧めします。
最後に
最近は、ブラウザ間の違いは、ほとんどなく(IE以外は)、一つのブラウザでテストしていれば大丈夫だと考えていました。
しかも、WooCommerceの機能なので、WooCommerce側で十分にテストされているという考えで、テストが甘かったことが反省です。