基于前面C#窗体发邮件拓展,想实现将查询到的数据直接打包发送,以excel附件发送邮件内容
当点击发邮件按钮
// 创建临时文件路径 string tempFilePath = Path.GetTempFileName(); gridControl1.ExportToXlsx(tempFilePath); // 导出GridView数据到临时文件 //ExportGridViewToCsv(gridView1, tempFilePath); //var list = gridView1.DataSource as List<DzDTO>; Frm_Email frm = new Frm_Email(tempFilePath); frm.ShowDialog();
我选择的是将数据内容以xslx格式存到临时路径中,然后邮件发送时有封装好的方法
//path:传值过来的临时路径 Attachment attachment = new Attachment(path, MediaTypeNames.Application.Octet); attachment.ContentDisposition.FileName = "采购单.xlsx"; // 设置附件的文件名 message.Attachments.Add(attachment); //发送邮件 client.Send(message); client.Dispose(); MessageBox.Show("发送成功!"); this.Close();
这样就可以发送附件了,有个不足的地方就是,临时路径中文件不知道怎么删除,因为当删除时一直提示线程被占用
问题:
至于为什么不用文件流穿的附件为csv格式,这个我也尝试过,输出的xlsx文件是这样的