Apakah ada cara untuk mengirim email berformat HTML dengan fungsi wp_mail Wordpress?


41

Apakah ada action_hook atau hal serupa yang dapat membantu saya mencapai ini?

Saya mencoba menambahkan markup dalam variabel string PHP dan baru saja melepaskan email dengan fungsi wp_mail seperti:

$email_to = 'someaddress@gmail.com';
$email_subject = 'Email subject';
$email_body = "<html><body><h1>Hello World!</h1></body></html>";
$send_mail = wp_mail($email_to, $email_subject, $email_body);

Tapi itu muncul sebagai plaintext?

Ada ide?

Jawaban:


58

dari halaman codex wp_mail :

Jenis konten default adalah 'teks / polos' yang tidak diizinkan menggunakan HTML. Namun, Anda dapat mengatur jenis konten email dengan menggunakan filter 'wp_mail_content_type'.

// 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' );

1
Hmm terdengar bermanfaat. Hanya pertanyaan, alasan khusus mengapa Anda menamai fungsi Anda wpse27856_set_content_type?
racl101

14
Tidak, itu hanya nama unik berdasarkan id dari pertanyaan khusus ini. wpse = wp stachexchange, 27856 adalah id dari pertanyaan ini di URL. Saya hanya melakukan itu untuk menghindari potensi tabrakan jika orang menyalin / menempelkan kode keluar dari sini.
Milo

2
Anda juga bisa memasukkan Tipe-Konten ke dalam header email Anda. Lihat bagaimana plugin Notifly melakukannya.
Otto

oh ya, ha ha. Betapa n00b saya. Kira itu adalah id dari posting ini.
racl101

1
Ini akan memecah email pengaturan ulang kata sandi Anda, karena tautan reset dimasukkan ke dalam <>.
Simon Josef Kok

90

Sebagai alternatif, Anda dapat menentukan header HTTP Tipe Konten di parameter $ header:

$to = 'sendto@example.com';
$subject = 'The subject';
$body = 'The email body content';
$headers = array('Content-Type: text/html; charset=UTF-8');

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

2
Ini berfungsi lebih baik karena kadang-kadang add_filter ditampilkan sebagai lampiran. Terima kasih telah berbagi!
deepakssn

10

Jangan lupa untuk menghapus filter tipe konten setelah Anda menggunakan fungsi wp_mail. Mengikuti penamaan jawaban yang diterima Anda harus melakukan ini setelah wp_mail dijalankan:

remove_filter( 'wp_mail_content_type','wpse27856_set_content_type' );

Periksa tiket ini di sini - Atur ulang tipe konten untuk menghindari konflik - http://core.trac.wordpress.org/ticket/23578


7
Ini harus berupa komentar, bukan jawaban, bukan?
Bob Diego

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.