WordPressサイトを運営していると、お問い合わせフォームは欠かせない機能の一つです。多くの場合、Contact Form 7を使ってフォームを実装しますが、レンタルサーバーによってはメールが送信されない問題が発生することがあります。今回は、この問題の原因と解決方法について、実際の経験を交えて解説します。
問題の発生:メールが届かない
WordPress + Contact Form 7の環境で、フォームは正常に送信されるものの、実際にメールが届かないという状況に遭遇したことはありませんか?
私の場合、さくらインターネットのレンタルサーバーでWordPressサイトを構築し、Contact Form 7でフォームを設定しました。送信テストでは「送信成功」と表示されるのに、実際にメールが届かないという謎の現象が発生しました。
ログを確認すると、以下のような内容が記録されていました:
Mail sent attempt for form: お問い合わせフォーム
Mail settings - To: example@gmail.com
Mail settings - From: sample site <info@example.com>
Server HTTP_HOST: example.com
Admin email: example@gmail.com
送信は試みられているものの、実際には届いていない状況です。
レンタルサーバーによる違い
さくらインターネットではできませんでしたがXserverではできました。
興味深いことに、同じWordPressとContact Form 7の設定を、Xserverのレンタルサーバーで試したところ、問題なくメールが送信されました。これは、レンタルサーバーによってPHPのメール送信機能に差があることを示しています。
さくらインターネットの特徴
さくらインターネットでは、以下のような理由でメール送信に制限がある可能性があります:
- 外部ドメイン(特にGmailなど)へのメール送信に制限
- 送信元アドレスの厳格な検証
- PHPの
mail()
関数に関する制限 - 共用サーバーでのセキュリティポリシー
Xserverの特徴
一方、Xserverでは:
- PHPのメール送信設定がより柔軟
- 外部ドメインへの送信制限が比較的緩やか
- PHPMailerとの互換性が高い
- メール認証に関する処理が異なる
送信者アドレスの問題
Contact Form 7のデフォルト設定では、送信元(From)アドレスとして以下のような形式が使われます:
[_site_title] <wordpress@サイトのドメイン>
また、カスタマイズされた設定では:
サイト名 <info@サイトのドメイン>
のような形式もよく使われます。
問題は、これらのメールアドレス(wordpress@...
やinfo@...
)が実際にサーバー上で有効なメールアカウントとして設定されていない場合、一部のサーバーでは送信が拒否される可能性があることです。
解決策:SMTPプラグインを使用する
この問題を解決する最も確実な方法は、WP Mail SMTPなどのプラグインを使用して、外部のSMTPサーバーを経由してメールを送信することです。
WP Mail SMTPの利点
- サーバーのメール送信機能に依存しない
- レンタルサーバーの制限を回避できる
- より信頼性の高いメール配信が可能
- 認証つきの送信
- SPF/DKIM認証に対応
- Gmailなどでスパム判定されにくい
- 簡単な設定
- 直感的な管理画面
- テスト送信機能で動作確認が可能
実装手順
- WordPress管理画面からWP Mail SMTPプラグインをインストール・有効化
- プラグイン設定画面で以下を設定:
- Gmail、SendGrid、Amazon SESなどのSMTPサービスを選択
- 必要な認証情報を入力
- テスト送信で動作確認
まとめ
レンタルサーバーによって、PHPからのメール送信機能には差があります。さくらインターネットではContact Form 7のデフォルト設定でメールが送信できなかったケースでも、Xserverでは問題なく動作しました。
しかし、どのレンタルサーバーでも確実にメール送信を行いたい場合は、WP Mail SMTPなどのプラグインを使用して外部SMTPサービスを経由する方法がベストです。これにより、サーバーの制限に関係なく、信頼性の高いメール送信が可能になります。
WordPressサイトを構築する際は、お問い合わせフォームのテストを忘れずに行い、必要に応じてSMTPプラグインの導入を検討しましょう。