关于C#发送邮件附件问题

基于前面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文件是这样的

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个使用C#编写的控制台程序,用于发送邮件: ```csharp using System; using System.Net; using System.Net.Mail; class Program { static void Main(string[] args) { // 设置邮件服务器 string smtpServer = args[0]; int smtpPort = 25; SmtpClient client = new SmtpClient(smtpServer, smtpPort); // 设置件人 string from = args[1]; string displayName = args[2]; MailAddress fromAddress = new MailAddress(from, displayName); // 设置收件人 string to = args[3]; MailAddress toAddress = new MailAddress(to); // 创建邮件对象 MailMessage message = new MailMessage(fromAddress, toAddress); // 设置抄送和密送 if (args.Length > 4) { string[] cc = args[4].Split(','); foreach (string c in cc) { message.CC.Add(c); } } if (args.Length > 5) { string[] bcc = args[5].Split(','); foreach (string b in bcc) { message.Bcc.Add(b); } } // 设置主题和内容 message.Subject = args[6]; message.Body = args[7]; // 添加附件 if (args.Length > 8) { string[] attachments = args[8].Split(','); foreach (string attachment in attachments) { Attachment file = new Attachment(attachment); message.Attachments.Add(file); } } // 发送邮件 client.Send(message); Console.WriteLine("邮件送成功!"); } } ``` 在命令行中输入以下命令即可发送邮件: ``` SendMail 邮件服务器IP 件人 显示名称 收件人 抄送 密送 主题 内容 文件 ``` 其中,邮件服务器IP、件人、显示名称、收件人、主题和内容是必填项,抄送、密送和文件是可选项。如果有多个收件人、抄送或密送,可以用逗号分隔。如果有多个文件,也可以用逗号分隔。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值