2014-10-24 7 views
5

किसी को उम्मीद है कि कोई इसके साथ मदद करने में सक्षम होगा, मैं दौर देख रहा हूं और मुझे कहीं भी कोई जवाब नहीं मिल रहा है।.NET 4.5 SMTP क्लाइंट डॉट स्टफिंग समस्या जब पिकअप निर्देशिका

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

जब मैं client.Send() पर कॉल करता हूं तो मैं इसे सटीक रेखा तक सीमित करने में सक्षम हूं। अगर मैं भेजने से पहले संदेश निकाय का निरीक्षण करता हूं, तो यूआरएल सही ढंग से गठित होता है। संदेश के बाद संदेश निकाय का निरीक्षण करते हुए, यूआरएल में .. मौजूद है।

  1. किसी और को डॉट भरने के साथ एक समस्या का सामना करते है जब SmtpDeliveryMethod.SpecifiedPickupDirectory का उपयोग कर:

    मेरा प्रश्न, या प्रश्न मुझे लगता है, इस प्रकार हैं?

  2. सही ढंग से इसे संभालने के लिए किसकी नौकरी है? .NET SMTP या द्वितीयक सेवा जो बाद में इस संदेश को उठाती है और इसे अंतिम गंतव्य पर भेजती है?
  3. इसे हल करने के तरीके पर कोई सलाह?

मैंने पहले approach described here को आजमाया है, लेकिन यह कई अपवादों के साथ विफल रहता है।

मैं मुख्य रूप से डिस्क पर किसी स्थान पर इस एमएमएल फ़ाइल को सहेजने का एक तरीका ढूंढ रहा हूं जिसे बाद में उठाया जा सकता है और भेजा जा सकता है, सी # पर मेरा ज्ञान अभी भी काफी सीमित है इसलिए कुछ सरल हो सकता है देख रहे हैं, इसलिए किसी भी सलाह या मार्गदर्शन की सराहना की जाएगी!

मैंने इस मुद्दे को आजमाने और पुन: बनाने के लिए कोड का एक छोटा सा नमूना टुकड़ा बनाया है, यह सही सामग्री नहीं है जिसका उपयोग मैं कर रहा हूं, लेकिन यह दिखाता है कि क्लाइंट के माध्यम से भेजने के बाद।() विधि, वहाँ हैं स्ट्रिंग की शुरुआत में 2 '..'।

using (var client = new SmtpClient()) 
{ 
client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; 
client.PickupDirectoryLocation = @"C:\temp"; 
var message = new MailMessage(); 
message.To.Add(new MailAddress("[email protected]")); 
message.From = new MailAddress("[email protected]"); 
message.Subject = "Smtp Dot Stuffing Test"; 
message.Body = ".A.B.C..... .0.1.2.3.4.5.6.7.8.9"; 
client.Send(message); 
} 
+0

क्या आप हमें कुछ प्रासंगिक कोड दिखा सकते हैं? – Dawnkeeper

+0

@ डॉनकीपर मैंने अभी समस्या –

उत्तर

3

SmtpClient फ़ाइल में सहेजते समय बाइट-स्टफिंग नहीं होना चाहिए। यह केवल तभी आवश्यक होता है जब डीएटीए कमांड को समय-समय पर समाप्त करने से रोकने के लिए वास्तव में "एसएमटीपी सर्वर पर संदेश स्ट्रीम" अपलोड किया जाता है (जो लाइन के साथ समाप्त होता है: "। \ R \ n")।

यदि फ़ाइल में सहेजते समय SmtpClient बाइट स्टफिंग है, तो यह बहुत टूटा व्यवहार है।

चूंकि आप System.Net.Mail (और मुझे लगता है कि आप हैं) का उपयोग कर रहे हैं, तो यह काम करना असंभव है, इसलिए मैं आपके संदेश को फ़ाइल में बनाने और सहेजने के लिए MimeKit का उपयोग करने की अनुशंसा कर सकता हूं।

फिर, यदि आपको संदेश को फिर से पार्स करने और इसे SMTP के माध्यम से भेजने की आवश्यकता है, तो आप ऐसा करने के लिए MailKit का उपयोग कर सकते हैं।

+0

समस्या का प्रदर्शन करने के लिए नमूना कोड का एक छोटा सा टुकड़ा जोड़ा है हाँ, मैं System.Net.Mail का उपयोग कर रहा हूं, ऐसा लगता है कि यह वहां कुछ तोड़ गया है। कम से कम मैं कुछ भी गलत नहीं कर रहा था, मैं आपका सुझाव दूंगा और देखें कि मैं कैसे चल रहा हूं।सलाह –

+0

के लिए धन्यवाद बस इसे एक बार दिया और एक बार जब मैंने माइमकिट्स 'लिखित()' विधि कहा और परिणामी एमएमएल फ़ाइल की जांच की तो यह सब ठीक स्वरूपित था। Mimekit, बहुत उपयोगी पुस्तकालय के बारे में टिप के लिए धन्यवाद! –

+0

कोई जांच नहीं, और धन्यवाद! – jstedfast

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