我想在电子邮件中发送附件,因此我想首先将附件文件保存在文件夹中。
所以当前代码发生了什么,邮件带有附件,但我的文件没有保存到
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();
}
答案 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)您是在服务器(网站?)还是台式机上进行测试?检查您是否可以写入要存储文件的文件夹的访问权限。