wp_mail関数でエンベロープFrom(Return-Path)が指定できない場合の対応方法
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)を指定できるみたい。
「設定画面→一般→返信パス」のところが当該設定になるかと思われる。
関連記事
-
-
Polylangのスイッチャーとページャーの組み合わせ方法
WordPressで多言語サイトを作成するにあたりPolylangというプラグイ ...
-
-
WordPressの自動更新(アップデート)を無効化する方法
あるサーバで通常はロードアベレージが1未満だけど10以上に上がりサーバに接続しづ ...
-
-
WordPressで複数あるクリック広告をランダムで表示させる方法
同じクリック広告をずっと貼っているとクリック単価が下がると聞いた。WordPre ...
-
-
WordPress Popular Postsのサムネイルが表示されない
WordPressの人気記事を表示させるWordPress Popular Po ...
-
-
WordPressのWP-Mail-SMTPプラグインが動かない
PHPのバージョンを下げてからWordPressで外部メールサーバが使えるWP- ...