2015-02-11 10 views
5

में खाली के रूप में आ रहा है, मैं मेल में अनुलग्नक भेज सकता हूं लेकिन अनुलग्नक सामग्री खाली है और आकार 0 बाइट्स के रूप में दिखाया जा रहा है।मेमोरी स्ट्रीम से ईमेल अटैचमेंट सी #

इंटरनेट पर कुछ खोज करने के बाद पाया गया कि हमें शुरुआत से शुरू करने के लिए मेमोरी स्ट्रीम स्थिति 0 को रीसेट करने की आवश्यकता है।

मैंने यह भी कोशिश की लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। क्या आप कृपया मदद कर सकते हैं?

मेरी कोड स्निपेट कृपया नीचे:

नोट: मैं कार्यपुस्तिका को बचाने के लिए कर रहा हूँ और डाटा बचाया कार्यपुस्तिका में मौजूद है।

 MemoryStream memoryStream = new MemoryStream(); 

     StreamWriter writer = new StreamWriter(memoryStream); 
     writer.Write(xlWorkbook); 
     writer.Flush(); 
     memoryStream.Position = 0; 
     MailMessage mail = new MailMessage(); 
     SmtpClient SmtpServer = new SmtpClient("smtpclient"); 
     mail.From = new MailAddress("[email protected]"); 
     mail.To.Add("[email protected]"); 
     mail.Subject = "Entry"; 
     mail.Body = "Hello, PFA "; 
     System.Net.Mail.Attachment attachment; 

     attachment = new System.Net.Mail.Attachment(memoryStream,"xls"); 
     attachment.ContentDisposition.FileName = "Input" + DateTime.Now.ToString("yyyyMMdd_hhss") + ".xls"; 
     mail.Attachments.Add(attachment); 
     SmtpServer.Port = 465; 
     SmtpServer.UseDefaultCredentials = false; 
     SmtpServer.Credentials = new System.Net.NetworkCredential("Username", "password"); 
     SmtpServer.EnableSsl = true; 
     SmtpServer.Send(mail); 
     writer.Dispose(); 
+0

क्या आप जानते हैं कि एक्सएलएस फ़ाइल ठीक से पढ़ी जा रही है? फ्लश के बाद स्थिति क्या है? – Virmundi

+0

फ्लश के बाद स्थिति मान 44 –

+0

अंतिम नैदानिक ​​प्रश्न है, यदि आप स्थिति = 0 के बजाय 0 की तलाश करते हैं तो क्या होता है? MemStream.Seek की तरह (0, SeekOrigin.Begin); – Virmundi

उत्तर

4

मुझे लगता है कि लगाव मेल सिस्टम को भ्रमित कर रहा है। माइक्रोसॉफ्ट की सिफारिश सामग्री प्रकार को octet के रूप में निर्दिष्ट करना है। अटैचमेंट शुरू करने के लिए नीचे एक प्रतिस्थापन है। आपके कोड का रीसेट ठीक दिखता है।

string filename = "Input" + DateTime.Now.ToString("yyyyMMdd_hhss") + ".xls"; 
attachment = new System.Net.Mail.Attachment(memoryStream, filename, MediaTypeNames.Application.Octet); 
+0

इसे देखें: https://stackoverflow.com/questions/3710677/email-attachment-from-the-memorystream-comes-empty?rq=1 –

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