2012-10-08 21 views
11

में सादा/पाठ + टेक्स्ट/एचटीएमएल कैसे भेजना है, मैं टेक्स्ट और एचटीएमएल दोनों में एक ईमेल भेजने की कोशिश कर रहा हूं, लेकिन मैं सही हेडर सही ढंग से नहीं भेज सकता। विशेष रूप से, मैं सामग्री-प्रकार शीर्षलेख सेट करना चाहता हूं, लेकिन मुझे यह नहीं पता कि एचटीएमएल और टेक्स्ट पार्ट्स के लिए इसे अलग से कैसे सेट किया जाए।पियर मेल, यूटीएफ -8

$headers = array(
    'From'   => '[email protected]', 
    'Return-Path' => '[email protected]', 
    'Subject'  => 'mysubject', 
    'text_encoding' => '7bit', 
    'text_charset' => 'UTF-8', 
    'html_charset' => 'UTF-8', 
    'head_charset' => 'UTF-8', 
    'Content-Type' => 'text/html; charset=UTF-8' 
); 

$mime = new Mail_mime(); 

$html = '<html><body><b>my body</b></body></html>'; 
$text = 'my body'; 

$mime->setTXTBody($text); 
$mime->setHTMLBody($html); 

$body = $mime->get(); 
$headers = $mime->headers($headers); 
$mail_object =& Mail::factory('smtp', $GLOBALS['pear_mail_config']); 
$mail_object->send('[email protected]', $headers, $body); 

ईमेल मुझे मिलता है कि:

यह मेरा कोड है

From: [email protected] 
Subject: mysubject 
text_encoding: 7bit 
text_charset: UTF-8 
html_charset: UTF-8 
head_charset: UTF-8 
Content-Type: multipart/alternative; 
    boundary="=_7adf2d854b1ad792c802a9db31084520" 
Message-Id: <.....cut.....> 
Date: Mon, 8 Oct 2012 15:40:54 +0200 (CEST) 
To: undisclosed-recipients:; 

--=_7adf2d854b1ad792c802a9db31084520 
Content-Transfer-Encoding: 7bit 
Content-Type: text/plain; charset="ISO-8859-1" 

my body 

--=_7adf2d854b1ad792c802a9db31084520 
Content-Transfer-Encoding: quoted-printable 
Content-Type: text/html; charset="ISO-8859-1" 

<html><body><b>my body</b></body></html> 
--=_7adf2d854b1ad792c802a9db31084520-- 

ऐसा लगता है कि Content-Type हैडर मैं सेट पूरी तरह से नजरअंदाज कर दिया है। मैं कुछ सेट HTMLHeaders और setTXTHeaders कार्यों की अपेक्षा करता था, लेकिन ऐसा लगता है कि ऐसा कुछ भी नहीं है। क्या मैं कुछ भूल रहा हूँ? मैं सामग्री-प्रकार शीर्षलेख दोनों को यूटीएफ -8 में कैसे सेट कर सकता हूं?

उत्तर

31

मुझे पता चला कि हेडर को अलग-अलग लिखा जाना चाहिए। विशेष रूप से, उनमें से कुछ माइम ऑब्जेक्ट के पैरामीटर हैं, न कि ईमेल हेडर। फिर mime_params सरणी get() फ़ंक्शन पर पास की जानी चाहिए।

यह हेडर सेट करने के लिए सही तरीका है:

$headers = array(
    'From'   => '[email protected]', 
    'Return-Path' => '[email protected]', 
    'Subject'  => 'mysubject', 
    'Content-Type' => 'text/html; charset=UTF-8' 
); 

$mime_params = array(
    'text_encoding' => '7bit', 
    'text_charset' => 'UTF-8', 
    'html_charset' => 'UTF-8', 
    'head_charset' => 'UTF-8' 
); 

$mime = new Mail_mime(); 

$html = '<html><body><b>my body</b></body></html>'; 
$text = 'my body'; 

$mime->setTXTBody($text); 
$mime->setHTMLBody($html); 

$body = $mime->get($mime_params); 
$headers = $mime->headers($headers); 
$mail_object =& Mail::factory('smtp', $GLOBALS['pear_mail_config']); 
$mail_object->send('[email protected]', $headers, $body); 
+0

'require_once 'मेल/mime.php' जोड़ने का ध्यान रखें,'। – Knu

+1

अंत में, एक उत्तर ... –

+1

निश्चित रूप से एन्कोडिंग प्रकार माइम-> get() के माध्यम से पारित किया जाना चाहिए। अप वोट –

संबंधित मुद्दे