ITサポート

WooCommerce、WordPress、メール配信で困ったことと、解決策を紹介

誰かが同じような目にあったら役立つ情報

誰かが同じような目にあったら役立つ情報

toiee.jp の構築、リリースに置いて「困ったこと」と「対策」を説明します。かなり特殊なことですが、それ故に同じ問題を抱えた人に役立つと思って記します

“A “Sorry, we’re closed” sign hanging in a store window” by Tim Mossholder on Unsplash

問題 : WooCommerceのパスワードリセットが、Google Chrome、Firefox で使えなくなる

詳細

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 : メールが一切届かない人がいる

現状

既存のユーザーを事前にインポートしていました。その方々が、パスワードリセットをリクエストすると、自動でメールが送られます。このメールが一切届かない。迷惑メールボックスにすら入らない問題がありました。

原因

これはすぐに解決しました。調査方法は以下の通りです。

  1. サーバーのメールログをチェック ( /var/log/maillog )
  2. メールログを理解する

ログを見ると、 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キー」が良いと思います。以下のように、 yourSendGridUsernameapikeyと書く必要があります。個人的には、これがわかりづらく・・・間違いました。

APIキーを使う場合は、api:キー とする

まとめ

WordPress を使ってショッピングサイトや会員サイトを作る場合、自動返信メールなどが届かないと問題になります。

WordPressは、 SendGrid や Mandrill や Mailgun などを簡単に導入できます。上記のメール配信サービスを利用することを、強くお勧めします。

最後に

最近は、ブラウザ間の違いは、ほとんどなく(IE以外は)、一つのブラウザでテストしていれば大丈夫だと考えていました。

しかも、WooCommerceの機能なので、WooCommerce側で十分にテストされているという考えで、テストが甘かったことが反省です。