2016-07-04 6 views
10

मैं System.Net.Mail.Attachment के साथ भेजने का प्रयास करता हूं। कुर्की कीलंबे गैर-एएससीआई नाम के साथ ईमेल संलग्नक

नाम "Счёт-договор №4321 от 4 июля.pdf" है

लगाव निर्माण के लिए कोड:

var nameEncoding = Encoding.UTF8; 
return new System.Net.Mail.Attachment(new MemoryStream(bytes), 
             MessageBodiesHelpers.EncodeAttachmentName(fileName, nameEncoding), 
             attachment.MediaType) 
     { 
      TransferEncoding = TransferEncoding.Base64, 
      NameEncoding = nameEncoding 
     }; 

MessageBodiesHelpers.EncodeAttachmentName अंदर कोड से https://social.msdn.microsoft.com/Forums/en-US/b6c764f7-4697-4394-b45f-128a24306d55/40-smtpclientsend-attachments-mit-umlauten-im-dateinamen?forum=dotnetframeworkde

लिया तो मुझे लगता है कि भेज जीमेल या एमएस एक्सचेंज के लिए लगाव, फिर संलग्नक का नाम सफलतापूर्वक डीकोड किया गया। लेकिन!

अगर मैं तो iCloud है कि अटैचमेंट भेजे मुझे मिलता है "???? - ??????? №4321 от4 ???? पीडीएफ।"

मेल अनुलग्नक हेडर:

एमएस एक्सचेंज से:

Content-Type: application/pdf; 
    name="=?utf-8?B?0KHRh9GR0YIt0LTQ?==?utf-8?B?vtCz0L7QstC+0YAg?==?utf-8?B?4oSWNDMyMSDQvtGC?==?utf-8?B?IDQg0LjRjtC70Y8u?==?utf-8?B?cGRm?=" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment 

iCloud से:

Content-Transfer-Encoding: BASE64 
Content-Type: APPLICATION/PDF; 
    name="????-??????? =?utf-8?B?4oSWNDMyMSDQvtGC?= 4 ????.pdf" 

icloud के लिए नाम कैसे प्रारूपित करें?

upd

मैं दृष्टिकोण (एमएस विनिमय) से संदेश अग्रेषित करते हैं iCloud करने के लिए, तो लगाव के नाम सफलतापूर्वक डीकोड। हेडर:

Content-Transfer-Encoding: BASE64 
Content-Disposition: ATTACHMENT; 
    size=200702; 
    modification-date="Mon, 04 Jul 2016 13:40:22 GMT"; 
    filename*=utf-8''%D0%A1%D1%87%D1%91%D1%82%2D%D0%B4%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%20%E2%84%964321%20%D0%BE%D1%82%204%20%D0%B8%D1%8E%D0%BB%D1%8F.pdf; 
    creation-date="Mon, 04 Jul 2016 13:40:22 GMT" 
Content-Type: APPLICATION/PDF; 
    name*=utf-8''%D0%A1%D1%87%D1%91%D1%82%2D%D0%B4%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%20%E2%84%964321%20%D0%BE%D1%82%204%20%D0%B8%D1%8E%D0%BB%D1%8F.pdf 

upd2

अगर मैं iCloud की वेब इंटरफेस का उपयोग कर संदेशों को पढ़ने (icloud.com), तो लगाव के नाम सफलतापूर्वक डीकोड।

+1

आप एक सामान्य ईमेल क्लाइंट का उपयोग iCloud में सही ढंग से लगाव भेज पा रहे हैं? उदाहरण के लिए आउटलुक? –

+0

@ मार्टिनब्रॉउन, – mif

+3

संपादित किया गया हो सकता है शायद आईसीएलओड यूनिकोड का समर्थन नहीं करता है। लेकिन मैं एन्कोडिंग का प्रयास करूंगा .UTF16; – Paparazzi

उत्तर

3

.NET 4.0 SmtpClient में अब आरएफसी लाइन की लंबाई सीमा (76 वर्ण) लागू करता है। इसके लिए एन्कोडिंग प्रक्रिया में व्यापक परिवर्तन की आवश्यकता है और आपके द्वारा वर्णित कुछ मुद्दों को शामिल नहीं किया गया है।

आपके मामले में, गैर-एएससीआई संलग्नक नामों के साथ कोई समस्या है जो 41 से अधिक utf-8 बाइट्स (एन्कोडिंग.यूटीएफ 8.गेटबाइटकाउंट (फ़ाइल नाम); को एन्कोड किया जाएगा;)। इस परिदृश्य में नाम दो बार एन्कोड किए गए हैं और उनमें अतिरिक्त लाइन ब्रेक हो सकते हैं। एकमात्र ज्ञात कामकाज गैर-असीसी फ़ाइल नामों की लंबाई को सीमित करना है।

आप अपनी समस्या के बारे में अधिक जानकारी के लिए इस post पढ़ सकते हैं

+0

मुझे वह बग पता है। और जब मैं फ़ाइल का नाम सीमित करता हूं, तो सब ठीक है। लेकिन अन्य मेल ऐप्स इस मुद्दे को क्यों संभालेंगे? – mif

0

ऐसा लगता है कि बाहरी iCloud बग है। आप उस समस्या here के बारे में एक प्रतिक्रिया दे सकते हैं।

0

इस discussion पर एक नज़र डालें। आपको इसका अनुवाद करना पड़ सकता है या फिर कोड को देखें। This में कुछ उपयोगी जानकारी भी है और वर्कअराउंड के रूप में पहला लिंक संदर्भित करता है।

+0

मैंने पहले ही इस चर्चा से कोड का उपयोग किया है। प्रश्न में लिंक करें। – mif

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