क्या 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.