WordPressに wp_mail() というメール送信用の関数が用意されていますが、デフォルトではプレーンテキストで送信されます。
HTMLメールで送信したい場合は、フィルターフックの “wp_mail_content_type” でコンテントタイプを指定するか wp_mail() の第4引数に渡すヘッダー情報内で指定します。
フィルターフックで指定する場合
宛先・タイトル・本文
// 宛先・タイトル・本文
$mail_to = 'example@example.com';
$subject = 'HTMLメール送信テスト';
$message = '<p>HTMLメールの送信テストです。</p>'."\r\n";
$message .= '<a href="'.home_url('/').'">リンクテスト(ホームURL)</a>'."\r\n";
$headers = array();
コンテントタイプ設定
function custom_wp_mail_content_type()
{
$content_type = 'text/html';
// $content_type = 'text/plain';
return $content_type;
}
add_filter( 'wp_mail_content_type', 'custom_wp_mail_content_type' );
メール送信
$res = wp_mail( $mail_to, $subject, $message, $headers );
フィルター削除(リセット)
remove_filter( 'wp_mail_content_type', 'custom_wp_mail_content_type' );
メールヘッダー情報内で指定する場合
宛先・タイトル・本文・ヘッダー
ヘッダーで指定する場合は、wp_mail() の第4引数に渡すヘッダーに ‘Content-Type: text/html; charset=UTF-8‘ とコンテントタイプを指定します。
// 宛先・タイトル・本文
$mail_to = 'example@example.com';
$subject = 'HTMLメール送信テスト';
$message = '<p>HTMLメールの送信テストです。</p>'."\r\n";
$message .= '<a href="'.home_url('/').'">リンクテスト(ホームURL)</a>'."\r\n";
$headers = array( 'Content-Type: text/html; charset=UTF-8' );
メール送信
$res = wp_mail( $mail_to, $subject, $message, $headers );
動作環境情報
"エックスサーバー" スタンダード(旧X10) "PHP" 7.4.25 "MySQL" 5.7 "WordPress" 6.0
コメント