क्या Wordpress 'wp_mail फ़ंक्शन के साथ HTML स्वरूपित ईमेल भेजने का एक तरीका है?


41

क्या कोई एक्शन_हूक या ऐसा ही कुछ है जो मुझे इसे हासिल करने में मदद कर सकता है?

मैंने PHP स्ट्रिंग वैरिएबल में मार्कअप जोड़ने की कोशिश की और wp_mail फ़ंक्शन के साथ ईमेल को ऐसे ही निकाल दिया:

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

लेकिन यह सादे के रूप में दिखा?

कोई विचार?

जवाबों:


58

से wp_mail कोडेक्स पेज :

डिफ़ॉल्ट सामग्री प्रकार 'टेक्स्ट / प्लेन' है जो HTML का उपयोग करने की अनुमति नहीं देता है। हालाँकि, आप '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
हम्म उपयोगी लगता है। बस एक सवाल, किसी विशेष कारण से आपने अपने फ़ंक्शन का नाम wpse27856_set_content_type रखा?
— racl101

14
नहीं, यह केवल एक विशिष्ट नाम है जो इस विशेष प्रश्न की आईडी पर आधारित है। wpse = wp stachexchange, 27856 URL में इस प्रश्न का आईडी है। मैं बस इतना करता हूं कि संभावित टकराव से बचने के लिए अगर लोग यहां से कोड कॉपी / पेस्ट करें।
— मिलो

2
आप अपने ईमेल हेडर में कंटेंट-टाइप को भी शामिल कर सकते हैं। यह देखें कि Notifly प्लगइन इसे कैसे करता है।
— ओटो

अरे हाँ, हा हा। क्या मैं एक n00b हूँ यकीन मानिए यह इस पोस्ट की आईडी है।
— racl101

1
यह आपके पासवर्ड रीसेट ईमेल को तोड़ देगा, क्योंकि रीसेट लिंक <> में लपेटा गया है।
— साइमन जोसेफ कोक

90

एक विकल्प के रूप में, आप $ हेडर पैरामीटर में कंटेंट-टाइप HTTP हेडर निर्दिष्ट कर सकते हैं:

$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 कभी-कभी अनुलग्नक के रूप में दिखाता है। साझा करने के लिए धन्यवाद!
— deepakssn

10

Wp_mail फ़ंक्शन का उपयोग करने के बाद सामग्री प्रकार फ़िल्टर को निकालना न भूलें। Wp_mail के निष्पादित होने के बाद आपको नामकरण स्वीकार किए गए उत्तर के बाद करना चाहिए:

remove_filter( 'wp_mail_content_type','wpse27856_set_content_type' );

इस टिकट को यहां देखें - संघर्ष से बचने के लिए सामग्री-प्रकार रीसेट करें - http://core.trac.wordpress.org/ticket/23578


7
यह टिप्पणी होनी चाहिए, जवाब नहीं, नहीं?
— बॉब डिएगो

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.