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は「メールが届かなかった場合」に使われるアドレスであり、エラーメールの通知先となります。
エラーメールの場合相手に届いていない訳ですから、送信者はメールが届いていない事を何らかの方法で知る必要がありますよね。
届いていない事を知るためのメール
実際の手紙でも、もし宛先住所が見つからなかったら一旦は郵便局に戻りますよね。
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の設定をしてみます。
Return-Path:support@lpeg.info
この時のアドレスは、通常のとは違うメールアドレスにしておいて下さい。
Contactform7からお問い合わせメールをテスト送信し、先程と同じ要領でメールヘッダーを確認してみましょう。
設定したにもかかわらず、先程とは違うアドレスが記載されている事がわかります。
設定されるメールアドレスについて
ちなみに今回のWEBサイトはエックスサーバーで運営しています。
ですので、エックスサーバーのホスト名のメールアドレスが入っていました。
Return-Path: <xakiplan@sv2202.xserver.jp>
※Contactform7の設定ページにアドレスを入力していても、強制的に「xxxx@svxxxx.xserver.jp」のメールに書き換えられてしまいます。
この様にサーバー側やプログラム側で強制決定されたメールアドレスになる様です。
このアドレスは稼働サーバーによって変わりますし、上記のメールにエラーが届いたとしても受信できませんよね。
Return-Pathの受信メールの確認
上記ホスト名のメールはサーバーディレクトリの「Maildir」内に保存されるようになっていて、FTPで確認する事ができます。
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のメールを設定する事ができましたね。