2012-02-21 21 views
7

मैं एक PHP ईमेल मेलबॉक्स स्क्रिप्ट बना रहा हूं।PHP एक HTML पृष्ठ में HTML ईमेल प्रदर्शित करता है

मैं जीमेल/हॉटमेल में एचटीएमएल ईमेल को स्पष्ट रूप से प्रदर्शित कैसे करूं।

यदि मैं इसे सिर्फ गूंजता हूं तो यह पूरे पृष्ठ लेआउट को प्रभावित करता है।

मैं iframes का उपयोग कर सकता हूं लेकिन निश्चित रूप से यह सबसे अच्छा समाधान नहीं है।

+0

इफ्रेम सबसे सरल समाधान हैं, जब तक आप ईमेल के भीतर गतिशील रूप से पुनः लिखने वाले सीएसएस पर एक स्टैब नहीं लेना चाहते हैं, इसलिए यह उस पृष्ठ को प्रभावित नहीं कर सकता है। –

+1

जीमेल और हॉटमेल बनाने वाली टीम के आकार के बारे में थोड़ा सा विचार करें, और कितनी बार उनके पास बग और समस्याएं हैं, और खुद से पूछें कि क्या आप वास्तव में इस सड़क पर जाना चाहते हैं ...मौजूदा लाइब्रेरी या प्लगइन का उपयोग करना 'सबसे अच्छा समाधान' है। Http://www.afterlogic.org/webmail-lite जैसी कुछ आपकी मदद कर सकती है। –

उत्तर

5

जैसा कि मार्क बी ने कहा, मुझे विश्वास है कि एक आईफ्रेम आपकी सबसे अच्छी शर्त होगी ... लेकिन कृपया महसूस करें कि यदि आप किसी भी ईमेल एचटीएमएल कोड को डंप करते हैं तो आप वायरस, ट्रोजन और दुर्भावनापूर्ण एचटीएमएल/जावास्क्रिप्ट कोड पर खुद को उजागर करने का जोखिम उठाते हैं - आपका अपने कंप्यूटर पर पेंडोरा का बॉक्स खोलना जब तक कि आपको उस HTML को सैंडबॉक्स/स्ट्रिप करने का कोई अच्छा तरीका न मिल जाए।

यहाँ कम से कम जावास्क्रिप्ट साफ करने के लिए एक सरल Regex है:

"(?s)<script.*?(/>|</script>)" 
+3

कि रेगेक्स केवल

1

एक डीआईवी कंटेनर बनाएं जो आप चौड़ाई (और यदि आवश्यक हो तो ऊंचाई) असाइन करें, और सुनिश्चित करें कि आप अपने डिज़ाइन से मेल खाने के लिए ओवरफ़्लो प्रॉपर्टी जोड़ते हैं। यह आपके ईमेल एचटीएमएल को अपने लेआउट के साथ हस्तक्षेप करने से रोकना चाहिए।

अद्यतन

एक div कंटेनर अभी भी आप का आश्वासन दिया है कि आप सभी सामान के बिना उचित सीएसएस एक iframe के समान कार्य करता है प्रदर्शन बॉक्स से और साथ आकार विवश कर सकते हैं।

यदि आप ईमेल में कोड के बारे में चिंतित हैं, तो strip_tags रेगेक्स से बेहतर समाधान प्रतीत होगा। आप अकेले छोड़ने के लिए टैग की एक सूची परिभाषित कर सकते हैं और फिर भी बाकी को अलग करने का विश्वास कर सकते हैं।

1

कुछ HTML साफ पुस्तकालय (यानी .: PHP.Tidy) के उपयोग पर विचार करें।

आप अच्छी तरह से स्वरूपित एचटीएमएल प्राप्त करने के लिए पुस्तकालय के माध्यम से पाठ पास कर सकते हैं।

एक अच्छा अभ्यास आपके द्वारा उपयोग किए जा रहे div में अधिकांश टैग के लिए एक सीएसएस मानक व्यवहार को परिभाषित करना होगा।

3

यदि आप 'ओपन सोर्स' लाइब्रेरी के साथ 'सर्वश्रेष्ठ समाधान' की तलाश में हैं, तो आप वही काम कर रहे हैं जो आप कर रहे हैं। अपने आप पर एक ईमेल रेंडरर बनाए रखना जो स्क्रिप्ट इंजेक्शन और अन्य हैक्स के खिलाफ सुरक्षित है, वह केवल एक व्यक्ति के लिए बहुत अधिक काम करेगा।

एक उदाहरण: https://github.com/afterlogic/webmail-lite

एक और: http://trac.roundcube.net/

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

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