• カミナリツイッターカミナリtwitter
  • カミナリフェイスブックカミナリfacebook
  • カミナリインスタグラムカミナリinstagram

山陰の情報を発信するカミナリ

ナビ

25

JULY

ウェブTUESDAY 2017 / 7 / 25

WordPressプラグイン Contact Form 7 で送信するメールに Return-Pathを設定する方法

メールヘッダの Return-Path というのがありまして、これは
「メールを送信し、宛先不明のエラーメールが届くメールアドレスを指定する」
という情報です。これを設定しないとエックスサーバーの場合

【契約名】@svXXXX.xserver.jp
(弊社の場合例えば kaminarisama@sv2324.xserver.jp )

というメールアドレスに戻ってきてしまうのですが、このメールアドレスに対して受信することはできないんですよね。。。

 

さて Contact Form 7 を使っている場合、通常であれば下記のように記述すれば任意のメールヘッダを付与することができます。

ところがこの設定、実際のメールには反映されません
(強制的に【サーバー名】@svXXXX.xserver.jp に書き換えられてしまいます)

 

Return-Pathを設定したい場合は、functions.php に下記を記述しておきましょう。

add_action('phpmailer_init', function($phpmailer){
  $phpmailer->SMTPKeepAlive = true;
  $phpmailer->Sender = 'test@kaminarimagazine.com';
});

 

何をしているか簡単に解説しますと、実は Return-Path を設定するにはメール送信サービス(sendmail)に特殊なオプションを付けて呼び出す必要があるのですが、Contact Form 7はそこには直接関与していません。WordPressの内部関数  wp_mail関数 を呼び出しているだけです。

wp_mail関数はメール送信ライブラリの PHPMailer を使用しており、PHPMailer のオプションを変更しないと Return-Path は設定できないのです。

ということで、PHPMailer を直接操作できるアクションフック phpmailer_init を利用しています。第一引数には参照渡しで PHPMailer インスタンスが渡されますので、そこで必要な設定をしているわけです。

 

なお、サンプルコードはクロージャを使用しているためPHPのバージョンが 5.3以降でないと使用できませんのでご承知くださいませ。

松本博之隠しプロフィール画像

TEXT by

松本 博之まつもとひろゆき)

1978年、鳥取県米子市生まれ。
株式会社マジックワード WEBシステムの開発・運用を担当。

この人が書いた他の記事を読む