おはようございます!マネジメントオフィスいまむらの今村敦剛です。
当社が運営するネットショップでは、お客様がパスワードを忘れた際に自主的にリセットできるのですが、リセットをするためのメールが届かないことがあって困ってました。この件をSendGridというSMTPプロバイダとFluent SMTPというプラグインで解決しました。
そもそもなんでパスワードリセットメールが届かないの?
いろいろ調べたところ、下記のような理由があるようです。
- 受信者側(お客様側)のプロバイダから迷惑メール扱いされてブロックされた
- 受信者側(お客様側)のメーラーで迷惑メールフォルダに自動的に仕分けられた
- (具体的な理由はよくわからないが)リセットをリクエストした側(お客様側)のブラウザのバージョンの問題
これまでログをとっていなかったので詳細はよくわかりませんが、感覚的には「受信者側(お客様側)のプロバイダから迷惑メール扱いされてブロックされた」というのが多いような気がしていました。でもこれ、プロバイダに「解除して」と言っても解除してくれないでしょうし、どうすればいいか途方に暮れていたんですよね。
SendGridとFluent SMTPで解決する
これはSMTPプロバイダを利用すれば解決する、という話は聞いていました。SMTPの信頼性が低いと迷惑メール扱いされるので、信頼性の高いプロバイダのサービスを使って送信することで、信頼性を高めることができるようです。
でもちょっとむずかしいかな……と思って敬遠していたのですが、重い腰を上げて設定をしました。
大まかな手順としては下記の通りです。
- SendGridへの本登録
- WordPressプラグインFluent SMTPのインストール
- SendGrid側でAPIの作成
- Fluent SMTP側でAPIの登録
念のための確認ですが、WooCommerceのメール設定で、パスワードリセットメールを送ることが有効化されていないと、そもそもメールが送信されません。まずはここを確認するところから始めましょう。
SendGridへの本登録
まずはSendGridへの本登録からです。SendGridは月12,000通までは無料プランで送信できます。今回の僕の目的はパスワードリセットメールが届くようにするだけですから、月に多くても1~2通くらい。よって無料プランで十分です。
登録は下記から行います。
なお、サインアップ後に登録内容を確認したのちに正式な通知が届く手はずとなっています。遅くとも翌営業日中には連絡がくるとのことですが、僕の場合は半日くらいでメールが届きました。まあ審査のようなものでしょうかね。
WordPressプラグインFluent SMTPのインストール
次にWordPress側でプラグインをインストールします。SMTPプロバイダとの連携のプラグインにはいくつかありますが、今回は比較的ダウンロード数も多いし更新頻度も高そうだったFluent SMTPを選んでみました。
インストールをすると、設定が求められます。クリックするとウィザードのようなものが走ります。まず、SMTPプロバイダを選択します。ここではSendGridをクリック。
続いて送信者情報の登録です。From Emailとは、送信元となるメールアドレス、From Nameとは送信者の表示名を示すところです。Force Sender Nameをクリックすると、他のプラグインの設定にかかわらず、ここで入力されたメールアドレスと送信者名が必ず使われるようです。
その下にAPIキーの入力フォームがあります。APIキーの取得はSendGrid側でする必要がありますが、API作成ページヘのリンクがありますので、それをクリックします。
SendGrid側でAPIの作成
SendGridへと遷移しますので、まずは右上のCreate API Keyをクリック。
APIキーの名前を好きに設定して、パーミッションの設定をします。よくわかりませんでしたが、とりあえずFull Accessにして、右下のCreate & Viewをクリック。
するとAPIキーが生成されましたね。コピーをしておき、これをFluent SMTPへもどってペーストします。
Fluent SMTP側でAPIの登録
Fluent SMTPに戻り、APIキーを入力します。保存場所をデータベースにするかコンフィグファイルにするかを選べるようですが、よくわからなかったのでデフォルトのデータベースのままで続行。下の緑色のSave Connection Settingsをクリックして終了。「こんな簡単でいいの?」というくらい簡単でした。
プラグインの設定画面からテストメールを送信することができます。早速gmailへ向けて送信したところ、すぐに受信。ちょっと読みづらいですが、ちゃんと赤枠のところに「sendgrid.net経由」って書いています。(送信者名も設定したとおりでした)
実際にパスワードリセットのリクエストをしてみました。ちゃんと「sendgrid.net経由」で送られていますね。これで設定完了のようです。
Fluent SMTP側でログも確認できますが、ちゃんと送られていますね。