2015-02-11 19 views
5

Tôi có thể gửi tệp đính kèm trong thư nhưng nội dung tệp đính kèm trống và kích thước được hiển thị là 0 byte.Tệp đính kèm email từ luồng bộ nhớ được để trống dưới dạng C#

Sau khi thực hiện một số tìm kiếm trên internet, chúng tôi cần đặt lại vị trí dòng bộ nhớ thành 0 để bắt đầu từ đầu.

Tôi đã thử điều đó nhưng có vẻ như nó không hoạt động. Bạn có thể giúp đỡ không?

Vui lòng tìm bên dưới đoạn mã của tôi:

LƯU Ý: Tôi có thể lưu sổ làm việc và Dữ liệu có trong sổ làm việc đã lưu.

 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

Bạn có biết rằng tệp XLS đang được đọc đúng không? Vị trí sau khi tuôn ra là gì? – Virmundi

+0

Giá trị vị trí sau khi xả là 44 –

+0

Câu hỏi chẩn đoán cuối cùng, điều gì sẽ xảy ra nếu bạn Tìm kiếm 0 thay vì Vị trí = 0? Giống như memStream.Seek (0, SeekOrigin.Begin); – Virmundi

Trả lời

4

Tôi nghĩ rằng tệp đính kèm gây nhầm lẫn với hệ thống thư. Khuyến nghị của Microsoft là chỉ định loại nội dung là octet. Dưới đây là một sự thay thế cho việc khởi tạo tập tin đính kèm. Việc đặt lại mã của bạn có vẻ ổn.

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

Xem phần này: https://stackoverflow.com/questions/3710677/email-attachment-from-the-memorystream-comes-empty?rq=1 –

Các vấn đề liên quan