なんか案件でカスタムしてると、メールの返信内容をHTMLメールにしたいっていう内容をいただくことがあります。
まぁ、テキストメールよりもHTMLメールのほうが見栄えが良いですし、リンクとかも単なるURLではなくボタンなどといった形で表現することができる分、反応率などもテキストメールに比べて優れているように思います。
私のような古のインターネッツユーザーはテキストメールを選好したりしがちですが、実際目を引かれて読んでしまうDMはHTMLメールだったりするんですよね(LCCのPeachのメールはよく出来ていると思うので必見です)。
さて、本題ですが当ブログのお問い合わせにも使っている、MW WP Formという問い合わせプラグインがありますので、こちらのプラグインで返信メールをHTML化する方法をお教えします。
送信内容の確認画面が必要な場合では採用されがちなプラグインなので、割りとニーズが有るのではないでしょう。
調べた限りインターネット上に存在してる記事だと不十分な記述が多かったので、私が検証した方法を以下に記述します。
(ていうか検索TOPに出てくるteratailの回答内容だと、返信内容にHTMLソース書けば動くとなってるけど動かない・・
add_filter('wp_mail', 'enforce_html_mails', 10,1);
function enforce_html_mails($args){
$headers = isset($args['headers'])?$args['headers']:[];
if (($args['subject']??'') === "HTML対象メールの件名")) {
if (is_array($headers)) {
$headers[] = 'Content-Type: text/html; charset=UTF-8';
} elseif (is_string($headers)) {
$headers = $headers . ($headers?"\r\n":"") . 'Content-Type: text/html; charset=UTF-8';
}
}
$args['headers'] = $headers;
return $args;
}
上記をテーマのfunctions.phpに記述して下さい。
やっていることはwp_mailフィルターをフックして、メールのheaderにcontent-typeがhtmlであることを明示的に差し込んでいるだけです。
headerが配列で渡される場合と文字列で来る場合があるようなので(条件不明)、どちらの場合でも動くように対応しています。


コメント