web-dev-qa-db-ja.com

Wordpressのwp_mail関数でHTML形式の電子メールを送信する方法はありますか?

私がこれを達成するのを助けることができるaction_hookまたは類似の何かがありますか?

マークアップをPHP文字列変数に追加してみたところ、wp_mail関数を使用して電子メールを送信しました。

$email_to = '[email protected]';
$email_subject = 'Email subject';
$email_body = "<html><body><h1>Hello World!</h1></body></html>";
$send_mail = wp_mail($email_to, $email_subject, $email_body);

しかし、それは平文として現れましたか?

何か案は?

37
racl101

wp_mail codexページから

デフォルトのコンテンツタイプは 'text/plain'です。これはHTMLの使用を許可しません。ただし、 'wp_mail_content_type'フィルタを使用してEメールのコンテンツタイプを設定できます。

// In theme's functions.php or plug-in code:

function wpse27856_set_content_type(){
    return "text/html";
}
add_filter( 'wp_mail_content_type','wpse27856_set_content_type' );
54
Milo

代わりに、$ headersパラメータにContent-Type HTTPヘッダーを指定できます。

$to = '[email protected]';
$subject = 'The subject';
$body = 'The email body content';
$headers = array('Content-Type: text/html; charset=UTF-8');

wp_mail( $to, $subject, $body, $headers );
79
Jewel

Wp_mail関数を使用した後は、コンテンツタイプフィルタを削除することを忘れないでください。受け入れられた答えの命名に従って、あなたはwp_mailが実行された後にこれをするべきです:

remove_filter( 'wp_mail_content_type','wpse27856_set_content_type' );

こちらのチケットをチェックしてください - 競合を避けるためにcontent-typeをリセットしてください - http://core.trac.wordpress.org/ticket/23578

10
0v3rth3d4wn