勉強したことのメモ

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

  関連記事

Advanced Custom Fieldsでチェックボックスの記事を取得
Advanced Custom Fieldsでチェックボックスの記事を取得

Advanced Custom Fieldsでチェックボックス設定しているカスタ ...

WordPressにてACFで設定したカスタムフィールドの値を元に記事を並べ替える方法
WordPressにてACFで設定したカスタムフィールドの値を元に記事を並べ替える方法

WordPressにてAdvanced Custom Fieldsで設定したカス ...

WordPress Popular Postsのサムネイルが表示されない
WordPress Popular Postsのサムネイルが表示されない

WordPressの人気記事を表示させるWordPress Popular Po ...

WordPressでCSSとHTMLコーディングデータから自作テーマを作成する方法
WordPressでCSSとHTMLコーディングデータから自作テーマを作成する方法

CSSとHTMLコーディングデータがあり、それをWordPressのテーマに反映 ...

WordPressでカスタムフィールドとCSVファイル投稿する方法
WordPressでカスタムフィールドとCSVファイル投稿する方法

WordPressでカスタムフィールド設定している環境に、CSVファイルアップロ ...