2016-04-21 135 views
1

我想發送電子郵件中的附件,因此我想先將附件文件保存在文件夾中。如何在Windows應用程序中的文件夾中保存文件

那麼我現在的代碼發生了什麼事情,郵件正在附件中,但我的文件沒有保存到ATTACHMENT文件夾中。

這裏是我試圖

for (int i = 0; i < table.Rows.Count; i++) 
     { 
      if (1 == 1) 
      { 
       string StrPriBody = "This is a test mail for checking notification."; 

       MailMessage mail = new MailMessage(); 
       mail.Subject = "Daily Holding followup scheduler"; 
       mail.From = new System.Net.Mail.MailAddress("[email protected]"); 
       SmtpClient smtp = new SmtpClient(); 
       smtp.Timeout = 1000000; 
       smtp.Port = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["Port"]); 
       smtp.UseDefaultCredentials = true; 
       smtp.Host = System.Configuration.ConfigurationManager.AppSettings["MailHost"]; 
       smtp.Credentials = new NetworkCredential(mail.From.ToString(), "PS123456"); 
       smtp.EnableSsl = true; 
       mail.To.Add(new MailAddress("[email protected]")); 
       mail.IsBodyHtml = true; 
       mail.Body = StrPriBody; 

       DataSet ds = new DataSet(); 
       ds.Tables.Add(table); 
       ds.Tables[0].TableName = "Post sale follow up entries auto mailer"; 


       SaveFileDialog save = new SaveFileDialog(); 
       save.InitialDirectory = "\\Attachment"; 
       save.RestoreDirectory = true; 

       ExcelLibrary.DataSetHelper.CreateWorkbook("Employee_Details.xls", ds); 

       mail.Attachments.Add(new Attachment("Employee_Details.xls")); 

       smtp.Send(mail); 

       foreach (Attachment attachments in mail.Attachments) 
       { 
        attachments.Dispose(); 
       } 
+0

爲什麼你的文件應該保存在附件文件夾中?你如何告訴你的ExcelLibrary在該文件夾中創建文件? – Steve

+0

@Steve:我不知道如何在文件夾中創建該文件?任何幫助 – learner

+0

你不需要SaveFile對話框來做到這一點(並在你的代碼中定義它,但你沒有使用它)。只需使用[File.Copy](https://msdn.microsoft.com/en-us/library/system.io.file.copy(v = vs.110).aspx) – Pikoh

回答

1

你並不需要一個SaveFileDialog做到這一點的代碼(在你的代碼中定義它,但你不使用它)。只需使用File.Copy。所以,在這裏創建工作簿後:

ExcelLibrary.DataSetHelper.CreateWorkbook("Employee_Details.xls", ds); 

只需添加類似:

File.Copy("Employee_Details.xls","\\Attachment\Employee_Details.xls"); 
+0

爲什麼不直接從「源」文件中讀取它? – Dmitry

+0

由於'找不到路徑的一部分'\ Attachment \ Employee_Details.xls'而出錯。# – learner

+0

@learner,我不知道你想要保存該文件的路徑。我必須存在。如果文件夾是「c:\ attachments」,那麼將File.Copy方法的第二個參數更改爲 – Pikoh

0

1)爲什麼你使用SaveFileDialog?用戶必須選擇要保存到的文件夾和文件名?然後,您忘記「顯示」對話框,並在用戶關閉後 - 從中​​檢索所選的文件夾/文件名,並且(最好)使用完整路徑(C:\ Folder \ File ...),文件號爲CreateWorkbooknew Attachment(...)

2)您確定在致電ExcelLibrary.DataSetHelper.CreateWorkbook之後,這個文件實際上是寫入磁盤的內容嗎?可能你需要調用一些Save()方法? (這是圖書館特定的,在圖書館文檔中閱讀)

3)您確定在撥打ExcelLibrary.DataSetHelper.CreateWorkbook之後,通過編寫代碼關閉/解鎖新文件?可能你需要Dispose的東西? (再次檢查庫文檔)

4)您是在服務器(網站?)還是臺式機上測試?檢查您是否可以寫入您要存儲文件的文件夾。

+0

我在臺式機上測試,我想要的是郵件需要用excel附件發送,附件shd也可以在文件夾中獲得 – learner

相關問題