2011-03-04 12 views
6

मैं मेल भेजने के लिए PHP आंतरिक मेल फ़ंक्शन का उपयोग कर रहा हूं, मैंने इसे एक फ़ंक्शन में लपेट लिया जो यूटीएफ 8 प्रक्रिया है, मुझे यह ऑनलाइन मिला।PHP यूटीएफ 8 मेल आईफोन मेल ऐप पर गड़बड़ हो जाता है

यह काम करता है, मैंने अपने जीमेल में कोड में ईमेल भेजा और मेरे पीसी पर जीमेल और मेरे आउटलुक क्लाइंट दोनों में मेरे एक्सचेंज सर्वर पर मुझे संदेश सही मिला।

मेरा आईफोन एक्सचेंज और जीमेल खातों से भी जुड़ा हुआ है, इसलिए मुझे अपने आईफोन पर दोनों संदेश मिलते हैं। आईफोन को जीमेल संदेश सही तरीके से प्राप्त होता है, लेकिन एक्सचेंज खाता गड़बड़ वाले गिब्बरिश टेक्स्ट के साथ संदेश दिखाता है जहां कोई लैटिन वर्ण नहीं हैं।

उदाहरण बेलो इस विषय में और शरीर में हिब्रू पात्र भेजता है। मेरे आईफोन पर, विषय हिब्रू में सही ढंग से प्राप्त हो जाता है, लेकिन संदेश के शरीर में हिब्रू भागों को खराब कर दिया जाता है।

क्या कोई इस पर टिप्पणी कर सकता है? शायद इसे अपने सेटअप पर आज़माएं?

धन्यवाद,

<?php 


function mail_utf8($to, $subject = '(No subject)', $message = '', $header = '') { 
$header_ = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' . "\r\n"; 
mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $header_ . $header); 
} 

$mymessage = "Hello <BR>"; 
$mymessage.= "Received: now<BR/><BR/>"; 
$mymessage.= "details: שלום שלום<BR/><BR/>"; 

mail_utf8 ("[email protected],[email protected]", "שלום", $mymessage, "my_mail", "[email protected]"); 


?> 
+0

Btw, मुझे नहीं लगता कि आप की क्या ज़रूरत है ' 'टेक्स्ट/सादे' ईमेल भेजते समय
'' PHP_EOL' शायद बेहतर काम करेगा। – Czechnology

+0

असल में मैं HTML भेजने की कोशिश कर रहा हूं, मैंने इस उदाहरण में गलत हेडर की प्रतिलिपि बनाई है –

उत्तर

1

मैं iPhone और एक्सचेंज के साथ एक ही समस्या है, मैं Content-Transfer-Encoding: quoted-printable\r\n और quoted_printable_encode() का उपयोग कर अपने कोड इस तरह से कोशिश मेरी समस्या हल:

function mail_utf8($to, $subject = '(No subject)', $message = '', $from ='') { 
    $headers = "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-type: text/html; charset=UTF-8\r\n"; 
    $headers .= "Content-Transfer-Encoding: quoted-printable\r\n"; 
    $headers .= "From: $from\r\n"; 
    mail($to, $subject, $message, $headers); 
} 
$mymessage = "Hello <BR>"; 
$mymessage.= "Received: now<BR/><BR/>"; 
$mymessage.= "details: שלום שלום<BR/><BR/>"; 
$mymessage = quoted_printable_encode($mymessage); 

mail_utf8 ("[email protected],[email protected]", "שלום", $mymessage, "[email protected]"); 
0

सरल जवाब - Swift Mailer का उपयोग करें। ईमेल में हेडर जादू अप्रत्याशित है। मैंने थोड़ी देर के लिए इसके साथ खेलने की भी कोशिश की है, लेकिन जल्दी या बाद में, किसी ने बताया कि पर सेटअप (ईमेल प्रदाता या एप्लिकेशन), टेक्स्ट खराब है या कुछ (मैं चेक में बहुत से ईमेल भेजता हूं, इसलिए काम कर रहा हूं यूटीएफ प्राथमिकता है)।

स्विफ्ट मेलर का उपयोग करें और स्वयं को कुछ तंत्रिकाएं बचाएं। सेटअप करना और सीखना और बढ़िया काम करना तेज़ है।

+0

आपके द्वारा प्रदान किए गए एक मेल रैपर या PHPMailer काम करेगा, लेकिन यह इस विशिष्ट समस्या का समाधान नहीं है। विशेष रूप से यदि कोड पूरी तरह से एक रैपर के साथ काम करने के लिए refactoring काम करता है यह बस बग फिक्सिंग से अधिक काम हो सकता है। – dtech

+1

मैंने PHPMAILER, एक और रैपर की कोशिश की, यह मेल भेजा और मुझे एक ही परिणाम मिला ... अभी भी खराब ... –

+0

@Moshe Marciano, उस मामले में मैं आपकी और अधिक मदद नहीं कर सकता, मेरे पास बहुत कुछ नहीं है iProducts के साथ अनुभव और उनके आंतरिक के साथ सटीक शून्य अनुभव ... – Czechnology

1

क्योंकि आपके आईफोन के माध्यम से आपके जीमेल खाते पर संदेश सही ढंग से प्राप्त हुआ है, यह शायद एक्सचेंज सर्वर पर या आईफोन एक्सचेंज सिंक्रनाइज़ेशन में एक बग/गलत कॉन्फ़िगरेशन है।

करने के लिए सबसे अच्छी बात बेस 64 एन्कोड न केवल विषय बल्कि पूरे संदेश को होगी: अक्षर बेस 64 उपयोग लगभग हमेशा सही ढंग से स्थानांतरित होते हैं क्योंकि चरित्र कोड यूएस-एएससीआईआई, आईएसओ -885 9-एक्स में समान होते हैं और UTF-8। सभी आधुनिक मेल क्लाइंट बेस 64 को डीकोड कर सकते हैं, लेकिन यह आपके संदेश का आकार लगभग 33% बढ़ा देता है।

function mail_utf8($to, $subject = '(No subject)', $message = '', $header = '') { 
     $header_ = 'MIME-Version: 1.0' . "\r\n" . 
       'Content-type: text/plain; charset=UTF-8' . "\r\n" . 
       'Content-Transfer-Encoding: base64' . "\r\n"; 
     mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', base64_encode($message), $header_ . $header); 
} 
+0

अपना कोड आजमाया, जीमेल ने इसे सही पाया, आउटलुक और आईफोन को अब उसके सभी शरीर को गले लगा लिया गया, यहां तक ​​कि लैटिन पाठ भी ... –

+1

मैं संदेशों को भेजने के लिए थंडरबर्ड का उपयोग कर रहा हूं और उन्हें आईफोन के साथ जीमेल खाते से पढ़ने के समान लक्षण मिल गए हैं।मेरे मामले में 'कंटेंट-ट्रांसफर-एन्कोडिंग: 8 बिट' परिभाषित किया गया है, इसलिए ऐसा लगता है कि ट्रांसफर एन्कोडिंग समस्या की जड़ नहीं है। Http://www.google.com/support/forum/p/gmail/thread?tid=0cb7a810647d9dd8 और http://forum.nuevasync.com/forum/posts/list/15/118.page –

+0

का एक शब्द देखें इसका उपयोग करने वाले किसी को चेतावनी: base64_encoding आपके ईमेल को स्पैम/थोक फ़िल्टर में समाप्त होने की अधिक संभावना बनाता है क्योंकि बेस 64 एन्कोडेड बॉडी स्पैम फ़िल्टर के लिए एक लाल झंडा है। –

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