勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

wp_mail関数でエンベロープFrom(Return-Path)が指定できない場合の対応方法

  PHP WordPress CMS

WordPress内に設置されたお問い合わせのフォームようなシステムでエンベロープFrom(Return-Path)を指定してほしいという要望を受けた。ソースコードを見てみるとwp_mail()というWordPress用の関数が使われていた。以下に対応方法をメモ。

 

エンベロープFromって何?

要望を受けた際にまず「エンベロープFromって何?」と思った。調べたところReturn-Pathと同義っぽい。

詳細についてはこちらのサイトが分かりやすい。

 

wp_mail()ではエンベロープFrom(Return-Path)を指定できない

こちらのサイトによるとwp_mail()関数はエンベロープFrom(Return-Path)を指定できない模様。

対応方法はざっと調べたところ3パターンあり以下詳細。

 

対応方法

PHPのmb_send_mail関数に書き換える方法

PHPのmb_send_mail関数に書き換え第5引数にエンベロープFrom(Return-Path)を指定する。具体的には以下のような形。

<?php
mb_language('ja');
mb_internal_encoding('UTF-8');
$from = 'from@test.com';
$to = 'to@test.com';
if( mb_send_mail($to, 'subject', 'body', "From: {$from}\r\n", "-f{$from}") ){
    //成功時処理
}else{
    //失敗時処理
}

今回はこの方法を取った。

phpmailer_initフックを利用する方法

こちらのサイトによるとphpmailer_initというアクションフックを用いてエンベロープFrom(Return-Path)を指定できるみたい。具体的には以下のような形。

function set_return_path( $phpmailer ) {
    $phpmailer->Sender = 'from@test.com';
}
add_action( 'phpmailer_init', 'set_return_path' );
wp_mail( $to, $subject, $body );

WP Mail SMTPプラグインを利用する方法

WP Mail SMTPプラグインを利用することでエンベロープFrom(Return-Path)を指定できるみたい。

「設定画面→一般→返信パス」のところが当該設定になるかと思われる。

 - PHP WordPress CMS

  関連記事

WordPressのテーマファイル内で取得したオブジェクトを指定のフィールド名でソートする方法

WordPressのテーマファイル内で記事やカテゴリ一覧等を取得するとオブジェク ...

XML-RPCライブラリを利用してWordPressを外部サーバから投稿する方法

WordPressをダッシュボードからではなく、外部サーバのプログラムから投稿し ...

WordPressのユーザー画像とプロフィールの登録及び表示方法

WordPressでユーザー毎に画像とプロフィール部分にHTMLタグを登録したか ...

WordPressでスケジュール実行される日時を調べる方法

WordPressであるシステムを実装し、その際に毎日1回スケジュール実行(WP ...

Polylangのスイッチャーでクエリ(GETパラメータ)を引き継ぐ方法

WordPressで多言語サイトを作成するにあたりPolylangというプラグイ ...