Sunday 15 August 2010

In symfony 1.4, using swiftmailer, setTo with parentheses in name breaks message sending -


मुझे प्राप्तकर्ता के नाम कोष्ठक ( और )

उदाहरण कोड:

  $ mail = नया स्विफ्ट_माज़ेज़ (); $ मेल- & gt; सेटटो (एरिपिएंट @टेस्ट डॉट्स ',' प्राप्तकर्ता (ब्ला ब्ला)) '); $ मेल- & gt; सेटफ्रम (सेंडर @ टेस्ट कॉम ',' प्रेषक '); $ मेल- & gt; सेटस्क्यूब्स ('टेस्ट ईमेल'); $ मेल- & gt; सेटबोडी ('& lt; html & gt; & lt; body & gt; & lt; h3 & gt; हैलो & lt; / h3 & gt; & lt; / body & gt; & lt; / html & gt;', 'टेक्स्ट / html'); sfContext :: getInstance () - & gt; getMailer () - & gt; भेजने ($ मेल);   

यदि प्राप्तकर्ता जीमेल का उपयोग कर रहा है, तो वह ईमेल प्राप्त करता है, लेकिन अधिक जानकारी प्राप्त करने के लिए नीचे तीर पर क्लिक करते समय, हिस्सा: खाली है:

< Img src = "https://i.stack.imgur.com/TM0t4.png" alt = "करने के लिए अनुपस्थित: भाग">

समस्या यह है कि कुछ अन्य ईमेल सेवा उस ईमेल को प्राप्त नहीं करती हैं। < / P>

मूल संदेश सामग्री के लिए, यहां दिखाए जाने के लिए ब्लैक आउट करने के लिए बहुत अधिक विवरण है लेकिन मूलतः मेरा प्रश्न है कि मैं बिना कुछ भी तोड़ने के लिए कैसे उपयोग कर सकता हूं।

ऐसा लगता है कि base64_encode सहायता कर सकता है इसलिए मैंने swiftmailer वर्ग SimpleMessage.php को संशोधित किया है यह सुनिश्चित करने के लिए कि यह तय है हर बार आवेदन किया।

इस से SimpleMessage के संशोधन:

  सार्वजनिक फ़ंक्शन सेटटॉ ($ पते, $ name = null) {if (! Is_array ($ पते) & amp; amp; और amp;; ($ नाम)) {$ addresses = array ($ addresses = & gt; $ name); } यदि (! $ This- & gt; _setHeaderFieldModel ('to', (array) $ addresses)) {$ this- & gt; getHeaders () - & gt; addMailboxHeader ('to', (array) $ पते); } $ इस वापसी; }   

इसे करने के लिए:

  सार्वजनिक फ़ंक्शन सेटटॉ ($ पता, $ name = null) {// if $ name सेट है, इसे सांकेतिक शब्दों में बदलना यदि (isset ($ name)) {$ name = $ this- & gt; सांकेतिक नाम ($ name); } // यदि $ पता एक गैर-संख्यात्मक सरणी (ईमेल = & gt; नाम) है, तो प्रत्येक नाम को एन्कोड करें। == श्रेणी (0, गिनती ($ पता) - 1)) {विदेशी मुद्रा ($ $ के रूप में $ एफ़ेक्स = & gt; $ value) {$ addresses [if addresses ($ addresses) & amp; amp; $ कुंजी] = $ this- & gt; सांकेतिक नाम ($ मान) ;; }} यदि (! है_अरे ($ पते) & amp; amp; और amp; जारी ($ नाम)) {$ addresses = array ($ addresses = & gt; $ name); } यदि (! $ This- & gt; _setHeaderFieldModel ('to', (array) $ addresses)) {$ this- & gt; getHeaders () - & gt; addMailboxHeader ('to', (array) $ पते); } $ इस वापसी; } / ** * कुछ अक्षर * * @परम स्ट्रिंग $ name * @return string * / private function encodeName ($ name) {return "=? UTF-8? B?" के साथ समस्याओं से बचने के लिए नाम को एनकोड करें। Base64_encode ($ नाम) '? ='; }   

इस जवाब ने मेरी मदद की:

No comments:

Post a Comment