2017-02-16 1 views
1

메일을 통해 첨부 파일로 동적 csv 파일을 만들고 보내려고하지만 작동하지 않습니다. 첨부 파일이있는 메일을 보낼 수 있지만 파일은 비어 있습니다. 아래는 내 코드입니다.메일을 통한 첨부 파일로 동적 CSV 파일을 생성하고 보낼 수 없습니다.

var notProcessedRecords = FileFTPData.Where(x => x.LastName.StartsWith("9999")).ToList(); 

     string loggedInUserName = "Administrator"; 

     try 
     { 
     MemoryStream stream = new MemoryStream(); 
     TextWriter writer = new StreamWriter(stream, Encoding.Default); 
     StringBuilder sb = new StringBuilder(); 
     sb.AppendFormat(string.Format("{0}, {1}, {2}, {3}, {4}, {5} ", "FIRSTNAME", "LASTNAME", "USERID", "COMPANYNAME", "EMAIL", "PHONE")); 

     foreach (var item in notProcessedRecords) 
     { 
      sb.AppendLine(); 
      sb.AppendFormat(string.Format("{0}, {1}, {2}, {3}, {4}, {5} ", item.FirstName, item.LastName, item.UserId, item.CompanyName, item.Email, item.Phone)); 
     } 
     writer.WriteLine(sb); 

     MailMessage mail = new MailMessage(); 
     SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); 
     mail.From = new MailAddress("******@gmail.com"); 
     mail.To.Add("*******@yahoo.com"); 
     mail.Subject = "FTP file processing status"; 
     mail.Body = "<div>Hello " + loggedInUserName + ", </br></br> Following item are restricted from processing, due to some errors. Please check Process description for the same. </br></br> From, </br>Streben Support </div>"; 
     mail.IsBodyHtml = true; 

     Attachment attachment = new Attachment(stream, new ContentType("text/csv")); 
     attachment.Name = "test.csv"; 
     mail.Attachments.Add(attachment); 

     SmtpServer.Port = 587; 
     SmtpServer.Credentials = new System.Net.NetworkCredential("******@gmail.com", "******"); 
     SmtpServer.EnableSsl = true; 

     SmtpServer.Send(mail); 

     } 
     catch(Exception ex) 
     { 
     } 

누구든지 나를 고칠 수 있습니까?

답변

1

스트림에 대한 쓰기가 끝나면 Position 속성이 스트림의 끝으로 설정됩니다. 또한 스트림에 플러시되지 않은 일부 데이터가 여전히 라이터에 버퍼링되어있을 수 있습니다. 이 때문에 스트림에서 첨부 파일을 만들면 비어있는 것으로 보입니다. 이 문제를 해결하려면 다음을 수행하십시오.

// Done writing here // 

writer.Flush(); 
stream.Position = 0; 

// Create attachment here // 
+0

set stream.position = 0, 첨부 파일이 아직 비어 있습니다. – Sachin

+0

위치를 설정하기 전에 내 렸습니까? –

+0

아니요. 다음 행 다음에 플러시했습니다. 첨부 파일 첨부 = 새 첨부 파일 (스트림, 새 ContentType ("text/csv")); attachment.Name = "test.csv"; mail.Attachments.Add (첨부 파일); writer.Flush(); – Sachin

관련 문제