WordPress | wp_mail でHTMLメールを送信する方法

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

コメント

タイトルとURLをコピーしました