2008-09-12 13 views
6

भेजते समय" 76 वर्णों से अधिक उद्धृत-प्रिंट करने योग्य लाइन "चेतावनी मैंने एक HTML ई-मेल भेजने के लिए अपने वीबी.NET एप्लिकेशन में कुछ कोड लिखा है (इस मामले में, एक खोया पासवर्ड अनुस्मारक)।"एचटीएमएल ई-मेल

जब मैं ई-मेल का परीक्षण करता हूं, तो यह मेरे स्पैम फ़िल्टर द्वारा खाया जाता है। चीजें हैं जो यह बुरी तरह से पर स्कोरिंग है निम्न में से एक समस्या की वजह से है:

MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars

मैं ई-मेल के स्रोत के माध्यम से किया गया है, और मैं दो पंक्तियों में 76 वर्ण से प्रत्येक पंक्ति अब टूट गया है एक सीआर + एलएफ के बीच में, लेकिन इसने समस्या को ठीक नहीं किया है।

क्या कोई मुझे सही दिशा में इंगित कर सकता है?

धन्यवाद!

+0

[उद्धृत-प्रिंट करने योग्य] (http://en.wikipedia.org/wiki/Quoted_printable) एक एन्कोडिंग है, केवल एक रेखा लंबाई नहीं। लाइन लम्बाई को संशोधित करने के लिए आपको कुछ संदेश एन्कोडिंग फ़िल्टर के माध्यम से चलाने और कुछ पात्रों को कोड से बचने के लिए परिवर्तित करना होगा। –

+0

आप ईमेल भेजने का प्रयास कैसे करते हैं? यदि आप एक [MailMessage] (http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.aspx) ऑब्जेक्ट ('System.Net.Mail' के माध्यम से) बनाते हैं, तो इसमें भी है संपत्ति 'IsBodyHtml' है और यह सभी स्वरूपण और सबकुछ का ख्याल रखती है। – Biri

+0

@ बिरी हां - मैं MailMessage ऑब्जेक्ट का उपयोग कर रहा हूं, और मैंने IsBodyHtml को सत्य पर सेट कर दिया है। जब मैं स्पैम फ़िल्टर से प्रेषण पते को श्वेतसूची में डालता हूं, तो संदेश सही ढंग से काम करता है (और प्रदर्शित करता है)। यह सिर्फ इतना है कि इस 'त्रुटि' के कारण स्पैम फ़िल्टर मुझे नीचे चिह्नित कर रहा है। कोई अन्य विचार? मैं अपने ई-मेल के स्पैम स्कोर को बेहतर बनाने के लिए जो कुछ भी कर सकता हूं, उसे करने के लिए उत्सुक हूं ताकि मेरे आवेदन के उपयोगकर्ताओं के लिए काम करने का अधिक मौका हो। –

उत्तर

4

उद्धृत मुद्रित "8 {{HEX-Code}" में 8 बिट वर्ण फैलाता है, इस प्रकार संदेशों को लंबा बना देता है। शायद आप इस सीमा को मार रहे हैं?

क्या आपने 70 अक्षरों में संदेश तोड़ने की कोशिश की है? यह प्रति पंक्ति के कुछ पात्रों के लिए जगह प्रदान करना चाहिए।

या आप बेस 64 के साथ ईमेल को एन्कोड करते हैं - सभी मेल क्लाइंट इसे संभाल सकते हैं।

या आपने केवल सामग्री-स्थानांतरण-एन्कोडिंग को 8 बिट पर सेट किया है और डेटा को बिना सेंकोड किया है। मुझे पता है कि इन दिनों 8 बिट बाइट्स को संभालने में असमर्थ कोई मेल सर्वर नहीं है।

2

यह System.Net.Mail.MailMessage में उद्धृत-प्रिंट करने योग्य एन्कोडिंग के कार्यान्वयन में एक बग है, जो लंबे समय से वहां रहा है, लेकिन स्पष्ट रूप से अब तय किया गया है, नेट 4 बीटा 2.

http://connect.microsoft.com/VisualStudio/feedback/details/156052/mailmessage-body-encoding-quoted-printable-violates-rfcs-soft-line-breaks-requirements

एक काम के आसपास (भले ही यह अन्यथा इस तरह एक गैर मानव पठनीय एन्कोडिंग में एक सादे-पाठ माइम हिस्सा भेजने के लिए अच्छा अभ्यास नहीं होगा) के बजाय Base64 एन्कोडिंग का उपयोग करना है। क्लास के उपयोगकर्ता को भेजने से पहले संदेश की लाइनों को मैन्युअल रूप से विभाजित करने के लिए पूछना एक सामान्य समाधान नहीं है, क्योंकि संशोधित संदेश वह नहीं है जो वे भेजना चाहते थे (उदाहरण के लिए इसमें एक लिंक शामिल हो सकता है जो 76 वर्णों से अधिक लंबा है, और इसलिए विभाजित नहीं किया जा सकता है)। उद्धृत-प्रिंट करने योग्य एन्कोडिंग से पहले 76 वर्णों से अधिक लाइनों वाले संदेशों को संभाल सकता है, जब तक यह सही ढंग से कार्यान्वित किया जाता है।

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