2009-01-15 23 views
12

जब मैं "Here's the information you requested" की तरह, एक एचटीएमएल PHP से ईमेल इनकोडिंग भेजने के लिए करता है, तो विषय पंक्ति विशेष वर्ण शामिल कोशिश, पीएचपी encodes यह "Here's the information you requested."पीएचपी मेल विषय पंक्ति

पढ़ने के लिए मैं इसे ठीक करना कैसे एन्कोड करता?


यहाँ कोड पीएचपी मेल (का उपयोग करते हुए कैसा दिखता है) है:

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

$headers .= 'To: ' . $mod_params['name'] . '<' . $mod_params['email'] . '>' . "\r\n"; 

$headers .= 'From: <[email protected]>' . "\r\n"; 

$email_to = $mod_params['email']; 

$email_sub = "Here's the Information You Requested"; 

$body = html_entity_decode("<html><body>" . $email_html_body . "</body></html>"); 

mail($email_to,$email_sub,$body,$headers); 

यह SugarPHPMailer वर्ग के माध्यम से यह चल रहा है के रूप में ही त्रुटि देता है।

उत्तर

-1

स्विफ्टमेलर या अन्य लाइब्रेरी का उपयोग करने का प्रयास करें जो आपके लिए HTML मेल बनाने और एन्कोड करने की सभी जटिलताओं को संभालता है।

+0

मैं इसे शुगरक्रम के अंदर कर रहा हूं और हम इन्हें भेजने के लिए शुगरसीएमएम शुगर पीएचपीमेलर क्लास का उपयोग करने की कोशिश कर रहे हैं। बॉस शुगरसीएम के कार्यों का उपयोग करना चाहता है। – ericwindham

0

html_entity_decode() के माध्यम से विषय पंक्ति चल रहा है, लगता है कि हो सकता है आप विषय पंक्ति की कुछ इकाइयां है की कोशिश करो।

+0

पहले से ही यह कोशिश की है। हालांकि धन्यवाद। – ericwindham

5

स्ट्रिंग वास्तव में इनकोडिंग मूल्यों भेजने से पहले शामिल नहीं है, तो this पर एक नज़र डालें:

+0

दोनों का कोई फायदा नहीं हुआ। मैंने इसे पहले कभी नहीं देखा है। आपके जवाब के लिए धन्यवाद। – ericwindham

+0

अधिक संदर्भ जोड़ें –

-1

अक्सर कोड के अपमानजनक ब्लॉक को जमा करने से आपको बेहतर प्रतिक्रिया मिल जाएगी। इस क्रिया होने से पहले आप टेक्स्ट को कहीं भी एन्कोड कर रहे हैं। जैसा कि पहले सुझाव दिया गया था कि आप उस क्रिया को ढूंढ सकते हैं, और इसे सही कर सकते हैं, या आप ईमेल भेजने से पहले विषय पंक्ति को डीकोड कर सकते हैं।

+0

मैंने इसे भेजने से पहले इसे डीकोड करने का प्रयास किया है। मैंने SugarPHPMailer क्लास की बजाय php मेल() फ़ंक्शन से एक ही ईमेल भेजने का भी प्रयास किया है। यह SugarCrm विशिष्ट नहीं है। मेल() के साथ वही बात होती है। – ericwindham

+0

आपको कोड पोस्ट करने की आवश्यकता है तो ऐसा प्रतीत होता है। – Sampson

6

मैं में एक ऐसी ही मुद्दा था एक Wordpress प्लग में मैं पर काम कर रहा था और मैं racked मेरे मस्तिष्क अधिक से अधिक यहां से और विभिन्न अन्य Google खोज परिणामों में विभिन्न सुझावों को आज़माने। अंततः मुझे एक समाधान मिला जो मेरी स्थिति में काम करता था इसलिए मैं इसे साझा करूंगा। मैं कहूंगा कि यह पॉल का समाधान था जिसकी मैंने पहली बार कोशिश की और यह काम नहीं किया, लेकिन कारण मैं समाधान को "शॉर्टेंड" करने की कोशिश कर रहा था। मेरे मामले में सिर्फ html_entity_decode() को कॉल नहीं किया गया। क्यूं कर? अगर मैंने PHP दस्तावेज़ को अधिक बारीकी से पढ़ा था तो यह स्पष्ट होगा। मेरा मुद्दा एक ही उद्धरण पर एन्कोडिंग के साथ था और html_entity_decode() के लिए डिफ़ॉल्ट 'ENT_COMPAT' है जो अकेले सिंगल कोट्स छोड़ देता है। समाधान सभी पैरामीटर सेट करना था और काम किया था। हकीकत में, शायद मैं यूआरएफ -8 एन्कोडिंग कर रहा था, इसलिए शायद मैं वर्णमाला छोड़ सकता था, लेकिन मुझे लगा कि मैं पूरी तरह से हूं।

$decoded_str = html_entity_decode ( $value_to_decode, ENT_QUOTES, 'UTF-8'); 

यहां सबक एक अच्छा है, "दस्तावेज़ पढ़ें"। मैं यह नहीं कह रहा हूं कि आपने नहीं किया (आपने शायद किया था), लेकिन हममें से बहुत से लोग उस समाधान पर जल्दी और चमक में आते हैं जो हमें बैठे हुए चेहरे पर घूर रहा है अगर हम केवल देखेंगे।

39

इस प्रयास करें:

$newsubject='=?UTF-8?B?'.base64_encode($subject).'?='; 

इस तरह आप PHP या एमटीए के कूट पर भरोसा नहीं है, आप काम करते हैं, और मेल क्लाइंट यह समझना चाहिए। आपके नए विषय में कोई विशेष पात्र नहीं होंगे, इसलिए ईमेल वितरित करते समय कोई समस्या नहीं उठानी चाहिए।

+0

मैं इस पीटर का उपयोग कर रहा हूँ। यह अच्छा लगता है कि विषय कब लंबा है। क्या आप जानते हैं कि इसे कैसे दबाया जाए? मेरा मतलब है, आकार क्या है जिस पर विषय विभाजन किया जाना चाहिए? और कैसे? –

+2

बिल्कुल अद्भुत समाधान। तीन घंटे के बाल खींचने के सत्र को समाप्त करने के लिए @ पीटर का आभार मानना ​​!!! –

+2

+1 ओएमजी! यह काम करता हैं। –

2

आपको mb_encode_mimeheader का उपयोग करना चाहिए, बस पहले सेट करना याद रखें।

mb_internal_encoding("UTF-8"); //has to be set (of course your internal encoding may not be UTF-8). 
$subject = mb_encode_mimeheader($subject,'UTF-8','Q'); 

यह करने के लिए एन्कोडिंग का ख्याल रखना होगा (मानव पठनीय) उद्धरित-मुद्रण योग्य जब जरूरत और स्वचालित रूप से लंबाई के आधार पर लाइनों की सही मात्रा में विषय टूट गया।

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