2013-05-23 9 views
6

में गलत तरीके से प्रदर्शित करता है मैंने इस पर समाधान की खोज की और खोज की लेकिन इसका कोई फायदा नहीं हुआ।यूटीएफ -8 एन्कोडिंग के साथ PHP मेल माइक्रोसॉफ्ट मेल क्लाइंट

मैं यूपीएफ 8 में एन्कोड किए गए मिश्रित पाठ/एचटीएमएल ईमेल भेजने के लिए PHP मेलर का उपयोग कर रहा हूं। यहां प्रासंगिक कोड है:

$headers = "From: $fromPerson\r\n" . 
"Content-Transfer-Encoding: 8bit\r\n". 
"Reply-To: $fromPerson\r\n" . 
"Content-Type: multipart/alternative; boundary=". $mime_boundary_header. "\r\n" . 
"X-Mailer: PHP/" . phpversion(); 

$message = "$notice_text 

--$mime_boundary 
Content-Type: text/plain; charset='UTF-8' 
Content-Transfer-Encoding: 8bit 

$textEmail 

--$mime_boundary 
Content-Type: text/html; charset='UTF-8' 
Content-Transfer-Encoding: 8bit 

$htmlEmail 

--$mime_boundary--"; 

//mb_detect_encoding($message) returns UTF-8 
$mail_sent = @mail($to, $subject, $message, $headers); 

संदेशों में उन मुश्किल पात्रों के साथ स्पेनिश शामिल है। ईमेल जीमेल, हॉटमेल (ऑनलाइन आउटलुक), मैक मेल, फोन इत्यादि में ठीक दिखते हैं लेकिन विंडोज लाइव मेल या माइक्रोसॉफ्ट आउटलुक में नहीं।

यदि मैं मैन्युअल रूप से विंडोज लाइव मेल में डिफ़ॉल्ट फ़ॉन्ट सेट करता हूं तो संदेश सही ढंग से प्रदर्शित करता है, लेकिन अन्यथा यह नहीं करता है। यदि मैं किसी अन्य क्लाइंट से ईमेल को Outlook या Windows Live पर अग्रेषित करता हूं तो यह ठीक से प्रदर्शित होता है।

मुझे यकीन है कि मैं चारों ओर काम ढूंढ सकता हूं, लेकिन मुझे कुछ याद आ रही है? मैं रिसीवर पर भरोसा नहीं करना चाहता हूं कि संदेश के एन्कोडिंग को कैसे बदला जाए, तो क्या मुझे कुछ क्लाइंट एन्कोडिंग को पहचानने के लिए ईमेल में जोड़ने की ज़रूरत है?

मैं क्षमा चाहता हूं अगर यह कहीं और से निपटाया गया है, और मैं किसी भी सलाह की सराहना करता हूं। ऐसा लगता है कि मुझे आगे बढ़ना चाहिए और यह देखने के लिए PHPMailer का उपयोग करना है कि यह समस्या को हल करता है, लेकिन व्यक्तिगत जिज्ञासा से यह सीखना दिलचस्प होगा कि यह क्यों हो रहा है ...

+0

क्या ''' वर्णमाला को लपेटना आवश्यक है? – arnaud576875

उत्तर

12

मुझे यकीन नहीं है कि ' लपेटना वर्णमाला आवश्यक है, या यहां तक ​​कि सही भी। उन्हें हटाने का प्रयास करें:

Content-Type: text/plain; charset=UTF-8 
+0

अरे वहाँ! मेरे पास वापस आने के लिए धन्यवाद! और हाँ, आप सही थे, इस मुद्दे को सुलझाने वाले उद्धरणों को हटा रहे थे। आप मेरी प्रशंसा और अविश्वास भक्ति जीतते हैं। (संपादित क्योंकि शुरुआत में मैंने सोचा था कि यह काम नहीं कर रहा था ...) –

4

Riko के जवाब देने के लिए एक संशोधन एक छोटे से क्लीनर कोड के लिए बनाता है।

$header_array = [ 
    "MIME-Version: 1.0", 
    "Content-type: text/html; charset=UTF-8", 
    "From: [email protected]", 
    "Reply-To: [email protected]" 
]; 

$headers = implode("\r\n", $header_array); 
संबंधित मुद्दे