आउटलुक आउटलुकिंग माई लाइन ब्रेक एंड स्क्रू अप माय ईमेल फॉर्मेट


119

मैं डॉटनेट ढांचे का उपयोग करके एक ईमेल भेज रहा हूं। यहां वह टेम्प्लेट है जो मैं संदेश बनाने के लिए उपयोग कर रहा हूं:

Date of Hire: %HireDate%
Annual Salary: %AnnualIncome%
Reason for Request: %ReasonForRequest%

Name of Voluntary Employee: %FirstName% %LastName%
Total Coverage Applied For:  %EECoverageAmount%
Guaranteed Coverage Portion: %GICoveragePortion%
Amount Subject to Medical Evident: %GIOverage%

जब संदेशों को आउटलुक में प्राप्त किया जाता है, तो आउटलुक मुझे बताता है "इस संदेश में एक्स्ट्रा लाइन ब्रेक हटा दिए गए थे"। और संदेश इस तरह प्रदर्शित होता है:

Date of Hire: 9/28/2001
Annual Salary: $100,000
Reason for Request: New Hire

Name of Voluntary Employee: Ronald Weasley Total Coverage Applied For:  $500,000 Guaranteed Coverage Portion: $300,000.00 Amount Subject to Medical Evident: $200,000

नोट करें कि Outlook गलत तरीके से नाम, EECoverageAmount, आदि के बाद आवश्यक पंक्ति विराम को कैसे हटाता है ...

ईमेल प्राप्तकर्ताओं के लिए सही ढंग से फ़ॉर्मेट किया गया ईमेल प्राप्त करना महत्वपूर्ण है, और मुझे यह मानकर चलना होगा कि उनमें से कुछ लोग 2003 का उपयोग करते हैं। मैं यह भी नहीं मान सकता कि उन्हें संदेश को ठीक से प्रारूपित करने के लिए ऑटोकैलियन सुविधा को बंद करने के लिए पर्याप्त पता होगा।

मैंने इन संदेशों को अन्य मेल क्लाइंट में देखा है और वे सही तरीके से प्रदर्शित करते हैं

कुछ और जानकारी:

  • मैं UTF-8 BodyEncoding (msg.BodyEncoding = System.Text.Encoding.UTF8) का उपयोग कर रहा हूं
  • Msg.Body को UTF-8 एन्कोडेड टेक्स्ट फ़ाइल से पढ़ा जा रहा है, और प्रत्येक पंक्ति को एक क्रिप्ट के साथ समाप्त किया जाता है।

प्रश्न: मैं इस समस्या से बचने के लिए संदेश के प्रारूप को कैसे बदलूं?


12
जबकि नीचे दिए गए अत्यधिक उत्कीर्ण दोनों उत्तर सही हैं, सभी नियमों की सूची के लिए इस उत्तर को देखें ।
बोबसन


5
यह "सुविधा" क्यों मौजूद है?
मिर्ची

1
विंडोज की नई कोशिशें देखें \r\n:। इसने मेरे लिए काम किया।
केविनपेयर

जवाबों:


97

हर पंक्ति को 2 स्थानों से शुरू करें और आपके स्वरूपण को ध्यान में रखते हुए आउटलुक को "ट्रिक" किया जाएगा।

इसलिए बदलो

Date of Hire: %HireDate%
Annual Salary: %AnnualIncome%
Reason for Request: %ReasonForRequest%

Name of Voluntary Employee: %FirstName% %LastName%
Total Coverage Applied For:  %EECoverageAmount%
Guaranteed Coverage Portion: %GICoveragePortion%
Amount Subject to Medical Evident: %GIOverage%

सेवा

  Date of Hire: %HireDate%
  Annual Salary: %AnnualIncome%
  Reason for Request: %ReasonForRequest%

  Name of Voluntary Employee: %FirstName% %LastName%
  Total Coverage Applied For:  %EECoverageAmount%
  Guaranteed Coverage Portion: %GICoveragePortion%
  Amount Subject to Medical Evident: %GIOverage%
^^ <--- Two extra spaces at the start of every line

इस समस्या पर शोध करते समय मैंने जो लेख पाया है, वह मेरे उत्तर से थोड़ा अधिक गहराई में चला गया है।


6
यहाँ इसे हल करने के लिए एक आसान Regex है:Regex.Replace(messageBody, @"^(?!\s\s)", " ", RegexOptions.Multiline);
Wilfred Knievel

2
ठीक है, उस regex में दो स्थान हैं लेकिन यह html होने के नाते यह केवल एक प्रदर्शित कर रहा है!
विल्फ्रेड नाइफ

कोड उत्पन्न सादे पाठ ईमेल के लिए यह सबसे अच्छा समाधान है।
साल्वाडोर वालेंसिया

129

आप पंक्ति के अंत में (CR LF से ठीक पहले) एक टैब वर्ण सम्मिलित कर सकते हैं । यह अतिरिक्त सफेद स्थान लाइन के अंत में होगा और इसलिए उपयोगकर्ता को दिखाई नहीं देगा। आप बाईं ओर स्थान सम्मिलित करने के लिए इसे पसंद कर सकते हैं। ध्यान दें कि एक एकल स्थान पर्याप्त नहीं है (हालांकि शायद कई रिक्त स्थान मदद करेंगे, मुझे नहीं पता।)


14
Regex.Replace(messageBody, @"(?<!\t)((?<!\r)(?=\n)|(?=\r\n))", "\t", RegexOptions.Multiline)
विल्फ्रेड नाइफ सेप

Trac से आउटलुक उपयोगकर्ताओं को भेजे गए ईमेल के लिए सही समाधान।
sfarbota

1
+1 मुझे टैब के बजाय 3 रिक्त स्थान का उपयोग करना था, लेकिन मूल रूप से इस फिक्स ने मेरे लिए काम किया: Regex.Replace (messageBody, @ "<! <T! ((? <! \ _ R) (? = \ N) | =; = \ r \ n)) "," ",
RexxOptions.Multiline

की पुष्टि! यहाँ php स्निपेट के रूप में regex: $ re = '/ (? <? \ T) ((<- (r /)) (? = \ N) | (; = \ r \ n)) / m'? $ विकल्प = ""; $ MailText = preg_replace ($ re, $ विकल्प, $ MailText);
C4pt4inC4nn4bis

आउटलुक के लिए काम करता है, लेकिन सैमसंग मेल क्लाइंट fpr स्मार्टफोन पर पाठ मेलों को तोड़ता है :(
C4pt4inC4nn4bis

26

यह उत्तर Outlook क्लाइंट से सुविधा को "अक्षम" करने के तरीके पर है।

  • टूल्स पर जाएं -> "विकल्प ..."
  • "वरीयताएँ" टैब में "ईमेल विकल्प ..." पर क्लिक करें
  • बॉक्स को अनचेक करें "सादे पाठ संदेशों में अतिरिक्त पंक्ति विराम निकालें।"
  • ठीक है मारो

FYI करें: मैं आउटलुक 2007 का उपयोग कर रहा हूँ


3
मुझे यह सुविधा पसंद नहीं है। अन्य बातों के अलावा, यह ईमेल में कोड टूटने का कारण बनता है और PGP हस्ताक्षर जांच विफल हो जाती है।
ब्रायन रीटर

7
और आउटलुक 2010 में यह है: फ़ाइल> विकल्प> मेल> "संदेश प्रारूप" अनुभाग तक नीचे जाएं> "सादे पाठ संदेशों में अतिरिक्त पंक्ति विराम हटाएं" पर क्लिक करें।
पीटर फोर्ड

2
यह एक क्लाइंट-साइड समाधान है। आउटलुक को सर्वर साइड पर ऐसा करने से रोकने के लिए एक बेहतर तरीका एक विश्वसनीय तरीका होगा, यानी मेल को एक तरह से मेल करके, जो अन्य क्लाइंट्स को परेशान न करें (क्योंकि आपको पता नहीं है कि रिसीवर किस मेल क्लाइंट का उपयोग करेगा)।
टोबियास

7
धन्यवाद - और अब कृपया हमारे 100.000+ न्यूज़लेटर रिसीवर्स को ऐसा करने के लिए मार्गदर्शन करें
Muleskinner

4

मेरे पास HTML के रूप में हमेशा ई-मेल को बेहतर बनाने का सौभाग्य है। HTML प्रारूप की अनुमति देने के लिए क्लाइंट को सेट करने के लिए आपके पास अभी भी अंतिम-उपयोगकर्ता समस्या हो सकती है, लेकिन वे आमतौर पर इससे परिचित हैं क्योंकि बहुत से ई-मेल html स्वरूपित आते हैं। आपके पास html टैग्स को जोड़ने के लिए आपके अंत में थोड़ा और काम है, लेकिन अंतिम परिणाम बहुत अधिक नियंत्रणीय है।

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


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

BTW, s / http / html / g आपके उत्तर में।
अल्पकालीन

4

Outlook 2010 पर मेरे लिए "\ r \ n" के बजाय "t \ r \ n" (TAB के लिए \ t) जोड़ना मेरे लिए काम किया।


मैं "\r\n "इसी तरह के हैक के रूप में नई लाइन के बाद (दो रिक्त स्थान, कोई टैब) का उपयोग करके "हल" करता हूं । Outlook 2016 में काम करता है। YMMV।
user2864740

1

डग एल उत्तर पर विस्तार , क्योंकि मुझे लगता है कि HTML संदेश और भी अधिक सर्वव्यापी है और 2008 की तुलना में अब स्वीकार किया जाता है जब उस उत्तर को पोस्ट किया गया था। शरीर को रूपांतरित करने और HTML प्रारूप में संदेश भेजने में मदद करने के लिए यहां थोड़ा c # स्निपेट है:

body = string.Format("<font face='calibri,arial,sans-serif'>{0}<font/>", body.Replace("\r\n", "<br>"));

using (var smtpClient = new SmtpClient() { Host = smtpHost })
using (var msg = new MailMessage(from, emailDistribution, subject, body) { IsBodyHtml = true })
     smtpClient.Send(msg);

0

मैं एक ही समस्या देख रहा हूँ जब एक सादा-पाठ ईमेल उत्पन्न करता है और फिर इसे Outlook 2003 SP3 के साथ पढ़ता हूं। ऐसा प्रतीत होता है कि आप इसके द्वारा हटाने की प्रक्रिया को 40 वर्णों के नीचे लाइन की लंबाई से बचा सकते हैं। हमेशा व्यावहारिक नहीं हो सकता।


0

टेक्स्ट को <pre>टैग और आउटलुक में डालें और टेक्स्ट को सही तरीके से फॉर्मेट और प्रदर्शित करेंगे।

मैंने इसे HTML बॉडी में CSS इनलाइन में परिभाषित किया जैसे:

सीएसएस:

pre {
 font-family: Verdana, Geneva, sans-serif;
}

मैंने फ़ॉन्ट-परिवार को फ़ॉन्ट सेट करने के लिए परिभाषित किया है।

HTML:

<td width="70%"><pre>Entry Date/Time:       2013-09-19 17:06:25
Entered By:     Chris

worklog mania

____________________________________________________________________________________________________

Entry Date/Time:        2013-09-19 17:05:42
Entered By:     Chris

this is a new Worklog Entry</pre></td>

1
मेरा मानना ​​है कि मूल प्रश्न HTML को नहीं, सादे संदर्भों को संदर्भित करता है। आप समाधान के रूप में HTML में मिलाने का प्रयास कर रहे हैं।
क्रिस पीटर्स

0

ऑटो क्लीनिंग एक आउटलुक फीचर है जो अतिरिक्त लाइन ब्रेक को हटाता है। आप इसे दो तरीकों से रोक सकते हैं।

  • पहला तरीका कोड के माध्यम से ईमेल भेजते समय लाइनों से पहले कम से कम 2 अतिरिक्त स्थान जोड़ना है। आप इन अतिरिक्त स्थानों को केवल उन लाइनों से पहले जोड़ सकते हैं, जो आउटलुक स्वचालित रूप से हटा देता है।

  • दूसरा तरीका आउटलुक सेटिंग बदलना है जो अतिरिक्त लाइन ब्रेक को हटाने से आउटलुक को रोक देगा।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


-1

मेरे पाठ में '\ r \ n' शामिल है, लेकिन आउटलुक 2010 लाइन ब्रेक को प्रस्तुत नहीं करता है। HTML पैराग्राफ टैग द्वारा '\ r \ n' और लिफाफा टोकन द्वारा सीमांकित लाइनों के टोकन बनाएं। मेरा ईमेल प्रारूप HTML है। मैं नीचे दिए गए कोड में अपने ईमेल के लिए HTML बॉडी जेनरेट कर रहा हूं।

string[] tokens = Regex.Split(objTickt.Description, "\r\n");
  if (tokens.Length > 0)
  {
     foreach (string line in tokens)
     {
         //htmlTW.WriteEncodedText(objTickt.Description.Replace("\r\n", "\n\n"));
         htmlTW.RenderBeginTag(HtmlTextWriterTag.P);
         htmlTW.WriteEncodedText(line);
         htmlTW.RenderEndTag();
     }
  }

-6

अपनी रेखा समाप्ति को समतल से cr या lf में बदलें।

मुझे संदेह है कि ईमेल का शीर्ष केवल cr (या lf) का उपयोग करता है, और आउटलुक बाकी ईमेल को उसी प्रारूप का पालन करने की उम्मीद करता है।


मैंने एक सीआर को लाइन टर्मिनेटर बदलने की कोशिश की। यह काम नहीं किया। फिर मैंने इसे LF में बदलने की कोशिश की। यह भी काम नहीं किया।
अन्हो 29:08

1
संदिग्ध। आउटलुक में एक अत्यधिक संदिग्ध विशेषता है जो मेल को हार्ड लाइन के साथ प्रवाहित पाठ में बदलने की कोशिश करता है। अप्रत्याशित रूप से, यह अक्सर यह गलत हो जाता है, जैसा कि इस मामले में है।
डैनियल कैसिडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.