2016-04-21 68 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

相关问题