如何将文件保存在Windows应用程序的文件夹中

时间:2016-04-21 10:46:19

标签: c# windows-applications

我想在电子邮件中发送附件,因此我想首先将附件文件保存在文件夹中。

  

所以当前代码发生了什么,邮件带有附件,但我的文件没有保存到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("autosupport@powersoft.in");
                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("abc@test.com"));
                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();
                }

2 个答案:

答案 0 :(得分:1)

你不需要SaveFileDialog来做这件事(在你的代码中你定义它但你没有使用它)。只需使用File.Copy即可。因此,在此处创建工作簿之后:

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

只需添加以下内容:

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

答案 1 :(得分:0)

1)为什么使用SaveFileDialog?用户必须选择要保存的文件夹和文件名吗?然后你忘了“显示”对话框,并在用户关闭它之后 - 从中​​检索所选的文件夹/文件名,并且(最好)使用CreateWorkbook和{{的完整路径(C:\ Folder \ File ...) 1}}。

2)你确定在调用new Attachment(...)之后这个文件是否真的被写入带有内容的磁盘?您可能需要调用一些ExcelLibrary.DataSetHelper.CreateWorkbook方法吗? (这是特定于库的,在库文档中读取)

3)您是否确定通过编写代码来关闭/解锁调用Save()新文件后?可能你需要ExcelLibrary.DataSetHelper.CreateWorkbook什么? (再次,检查库文档)

4)您是在服务器(网站?)还是台式机上进行测试?检查您是否可以写入要存储文件的文件夹的访问权限。