Wordpress 'wp_mail işleviyle HTML olarak biçimlendirilmiş e-postalar göndermenin bir yolu var mı?


41

Bunu başarmama yardımcı olabilecek bir action_hook veya benzeri bir şey var mı?

Bir PHP string değişkenine işaretleme eklemeye çalıştım ve wp_mail işlevinde olduğu gibi bir e-posta kullandım:

$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);

Ama düz metin olarak ortaya çıktı?

Herhangi bir fikir?

Yanıtlar:


58

dan wp_mail kodeks sayfa :

Varsayılan içerik türü, HTML kullanımına izin vermeyen 'text / plain' şeklindedir. Ancak, 'wp_mail_content_type' filtresini kullanarak e-postanın içerik türünü ayarlayabilirsiniz.

// 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 kullanışlı geliyor. Sadece bir soru, fonksiyonunuzu isimlendirmenizin herhangi bir sebebi wpse27856_set_content_type?
racl101

13
Hayır, sadece bu sorunun kimliğini temel alan benzersiz bir isim. wpse = wp stachexchange, 27856, URL’de bu sorunun kimliğidir. Bunu, insanlar kodu buradan kopyalayıp / yapıştırırken ortaya çıkabilecek olası çarpışmaları önlemek için yapıyorum.
Milo

2
Ayrıca İçerik Türü'nü e-posta başlıklarınıza ekleyebilirsiniz. Notifly eklentisinin nasıl yaptığını inceleyin.
Otto,

oh evet, ha ha. Ne bir n00b. Sanırım bu yazının kimliği.
racl101

1
Bu, sıfırlama bağlantısı <> içine alındığından, şifre sıfırlama e-postanızı kıracak.
Simon Josef Kok

89

Alternatif olarak, $ headers parametresinde Content-Type HTTP başlığını belirleyebilirsiniz:

$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
Add_filter bazen ek olarak gösterildiğinden, bu daha iyi çalışır. Paylaşım için teşekkürler!
deepakssn

10

Wp_mail işlevini kullandıktan sonra içerik türü filtresini kaldırmayı unutmayın. Kabul edilen cevap adının ardından wp_mail çalıştırıldıktan sonra bunu yapmanız gerekir:

remove_filter( 'wp_mail_content_type','wpse27856_set_content_type' );

Bu bileti buradan kontrol edin - Çatışmalardan kaçınmak için içerik türünü sıfırlayın - http://core.trac.wordpress.org/ticket/23578


7
Bu bir yorum olmalı, cevap değil, hayır mı?
Bob Diego,

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.