Contactform7プラグインでReturn-Pathのメールアドレスを設定する

Contactform7プラグインでReturn-Pathのメールアドレスを設定する

Contactform7プラグインでReturn-Pathのメールアドレスを設定する

Return-Pathはメール送信に失敗した場合のエラーを通知してもらうメールアドレスであり、届いたメールに対して返信をするReply-toとは違います。

Reply-toは送信元のアドレスが自動で選択されますが、Return-Pathは送信者が任意に設定をする必要があります。

Contactform7ではReturn-Pathの設定が効かずにホスト名のメールが設定される事が多いため、functions.phpに直接記述する事で対処しましょう。

Contactform7でReturn-Pathを設定

Wordpressのお問い合わせフォームプラグイン「Contactform7」で、Return-Pathの設定をする場面に遭遇しました。

実はContactform7の設定画面でReturn-Pathの設定をしても、上手く作動しません。

本記事ではContactform7のお問い合わせメールに、Return-Pathの設定をする方法をご紹介します。

Return-Pathとは

設定をする前にReturn-Pathについて少しおさらいしておきましょう。

Return-Path(エンベロープFrom)とは、送信者側が設定する通知先アドレスの事です。

Return-PathとReply-toは違う

まずReturn-Pathの事を、送信元メールアドレスだと思っている人が多い様です。

「Return-Path=送信元メールアドレス」ではありません。

送信元アドレスはメールの返信時に、Reply-toの宛先アドレスとして確かに使われます。

届いたメール内容を元に、返信時にメールソフト側が自動で設定してくれる訳です。

Return-Pathは自分で任意に用意する

それに対してReturn-Pathのアドレスは、メール返信に使われるものではありません。

さらには、送信者本人が直接メールアドレスを設定する必要があります。

Reply-to:メールソフト側が送信元メールを元に自動で設定
Return-Path:送信者が手入力設定するメールアドレス

Return-Pathメールの用途

Return-PathもReply-toも、メールアドレスを設定するという意味では同じですね。

ただしReturn-Pathは、Reply-toとは明確に役割が違います。

Return-Pathはエラーの通知先

Reply-toとReturn-Pathの違い

Reply-toは「メールが届いた事が前提」であり、そのメールへ返事を出す際のアドレスになります。

それに対しReturn-Pathは「メールが届かなかった場合」に使われるアドレスであり、エラーメールの通知先となります。

エラーメールの場合相手に届いていない訳ですから、送信者はメールが届いていない事を何らかの方法で知る必要がありますよね。

届いていない事を知るためのメール

実際の手紙でも、もし宛先住所が見つからなかったら一旦は郵便局に戻りますよね。

Return-Pathはこの郵便局の役割を持っていると言って良いでしょう。

メール送信に失敗した場合に、失敗した事を通知してもらうメールアドレスになる訳です。

メールヘッダーのReturn-Pathを確認する

ではここでOutolookを例に、Return-Pathがどこにどの様に書かれているのかを確認してみましょう。

Return-Pathの情報は「メールヘッダー」に記載されています。

メールヘッダーの確認方法

Outlookからどれか一つ受信メールをダブルクリックして開いてみましょう。

メールの詳細ウィンドウ上のファイルメニュー
プレビューではなく専用ウィンドウで出しましょう。

メール画面の上部にある横並びメニューから「ファイル」を開きます。

プロパティをクリック

切り替わった画面上で「プロパティ」のアイコンをクリックすると、小ウィンドウが表示されるはずです。

メールヘッダー画面

メールヘッダー画面ウィンドウ

画面下の「インターネットヘッダー」の欄が、メールヘッダーを表示した情報になります。

Return-Path: <bounce-onamae@onamae.com> X-Original-To: info@lpeg.info Delivered-To: info@lpeg.info Received: from mail006.phy.xxxx.jp (localhost [127.0.0.1]) by mail006.phy.xxxx.jp (Postfix) with ESMTP id 642B5114056C

上記はムームードメインからのお知らせメールのメールヘッダー例です。

Return-Pathの欄にbounce-onamae@onamae.comと記述がありますね。

アカウント名の「bounce」とは、メールが届いていない状態を意味します。

この様にメールを送信できなかった事を知るための、Return-Path設定がされている訳です。

Return-Pathを設定していない場合

これまで気を使った事が無い人も多いと思いますが、Return-Pathは送信者が任意に設定をするものです。

仮にReturn-Pathを設定していない場合、自動的に「違うアドレス」が入る事がほとんどです。

通常のメールソフトでReturn-Pathを設定していない場合、メールヘッダーにはReply-toに使われる送信先アドレスが設定される事が多いです。

メール送信した際にエラーが返ってくるのは、このReturn-Pathのお陰なのです。

Contactform7でReturn-Pathを設定するには

随分話がそれてしまいましたので、「Contactform7」に戻りましょう。

Contactform7から届けられるメールにも、Return-Pathは設定しておいた方が良いです。

どんなメールアドレスからお問い合わせがされるかどうか、わかりませんからね。

さらにはユーザーがメールアドレスの入力を間違える事もあり得ます。

Return-Pathを設定しておけば、Contactform7のお問い合わせの送信エラーをメールで察知する事ができます。

Return-Path設定ができない

しかしここで問題が出てきます。

Contactform7ではReturn-Pathの設定が効かない訳です。

Contactform7に直接設定

Contactform7のメール設定タブの「追加ヘッダー」欄に、以下の様にReturn-Pathの設定をしてみます。

Contactform7の追加ヘッダーに記述した状態

Return-Path:support@lpeg.info

この時のアドレスは、通常のとは違うメールアドレスにしておいて下さい。

Contactform7からお問い合わせメールをテスト送信し、先程と同じ要領でメールヘッダーを確認してみましょう。

届いたメールのメールヘッダー情報を確認した様子

設定したにもかかわらず、先程とは違うアドレスが記載されている事がわかります。

設定されるメールアドレスについて

ちなみに今回のWEBサイトはエックスサーバーで運営しています。

ですので、エックスサーバーのホスト名のメールアドレスが入っていました。

Return-Path: <xakiplan@sv2202.xserver.jp>

※Contactform7の設定ページにアドレスを入力していても、強制的に「xxxx@svxxxx.xserver.jp」のメールに書き換えられてしまいます。

この様にサーバー側やプログラム側で強制決定されたメールアドレスになる様です。

このアドレスは稼働サーバーによって変わりますし、上記のメールにエラーが届いたとしても受信できませんよね。

Return-Pathの受信メールの確認

上記ホスト名のメールはサーバーディレクトリの「Maildir」内に保存されるようになっていて、FTPで確認する事ができます。

FTPのMaildir内のデータ

Maildirは契約サーバーのサーバーTOPディレクトリにありますので、一つずつ開いて確認してみて下さい。

functions.phpにReturn-Pathを設定する

実はContactform7ではReturn-Pathが効かない事は、以前からに知られていました。

ではどうすればよいのでしょうか。

テーマのfunctions.phpへ追記

ズバリ!functions.phpに専用コードを追記する事で解決します。

以下のコードを、現在のテーマのfunctions.phpに書き込んでみて下さい。

functions.php内記述

add_action('phpmailer_init', function($phpmailer){ $phpmailer->SMTPKeepAlive = true; $phpmailer->Sender = 'support@lpeg.info'; });

Senderの個所には、Return-Pathで受け取りたいメールアドレスを入れましょう。

たった4行で済みますので簡単ですね。

テスト送信

設定が済んだら、あらためてContactform7のお問い合わせフォームから送信をしてみます。

今度はメールヘッダーのReturn-Path欄に、functions.phpに設定したメールアドレスが記述されている事がわかります。

Return-Path: <support@lpeg.info>

これでContactform7でもReturn-Pathのメールを設定する事ができましたね。

この記事をシェアする

一押し人気コーナー紹介

Wordpressテーマカスタマイズ系記事