asp.net 开发 跬步篇〔3〕.net 邮件批量发送
2010-02-25 17:21
579 查看
最近的一个项目中,有一个批量发送工资条的功能,貌似很神秘,其实很简单。以前就知道.net中各有一个专门实现Email发送的命名空间,刚好这次可以实践一下。在这又得赞美一下.net,哈哈真是太会办事了,简单实现。
废话不在多说,直接切入主题吧。功能的需求是每个月在生成工资报表后触发操作,可以批量发送到地址薄中的各个员工的邮箱中。所以我就写了一个发送邮件的class、使用跟的时候直接用就可以了。发送邮件的命名空间是System.Net.Mail,使用也很简单〔代码见下〕
代码中,我用的是邮件的同步发送、还有一种异步发送,但是两种方式都有自己的应用场景。因为我的功能需求是批量发送工资条,邮箱中的每个人的信息是不同的。所以用同步发送,用hashtable 存储了地址和内容,然后一个循环,发送完成。如果使用跟的批量是一封邮件批量发送多多人,那么就可以用异步发送,这样的话性能上会有所提高,并且避免大数据量下死掉。异步的时候记得用这个回调:
smtp.SendCompleted += new System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback);
这样可以在这个方法中写一些后续的处理,比如发送结果的反馈。我的功能实现中是在一个log.txt文件中写入日志文件。这样在发送完成后,可以查看发送的结果。同步就不说了直接在完成后,写一个方法就ok了。简单又实用,真是居家必备。
分享了!欢迎交流!知识虽小,重在积累。
废话不在多说,直接切入主题吧。功能的需求是每个月在生成工资报表后触发操作,可以批量发送到地址薄中的各个员工的邮箱中。所以我就写了一个发送邮件的class、使用跟的时候直接用就可以了。发送邮件的命名空间是System.Net.Mail,使用也很简单〔代码见下〕
/// <summary> /// 发送邮件 /// </summary> /// <param name="mailHs">邮件集合hs[key:邮箱地址#收信人名称[代码]; value:邮箱内容]</param> /// <param name="smtpAuthUsername">发件人邮箱</param> /// <param name="smtpAuthPassword">邮箱密码</param> public void Send(Hashtable mailHs, string smtpAuthUsername, string smtpAuthPassword, string smtpServer, string titel, string subject) { string meg = string.Empty; //定义传输协议 System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(smtpServer); //设置认证发件人 smtp.Credentials = new System.Net.NetworkCredential(smtpAuthUsername, smtpAuthPassword); //异步发送完成获取发送状态 //smtp.SendCompleted += new System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback); System.Net.Mail.MailMessage mail; foreach (string var in mailHs.Keys) { string[] list = var.Split('#'); try { mail = new System.Net.Mail.MailMessage(); mail.From = new System.Net.Mail.MailAddress(smtpAuthUsername, titel); //回复人,回复人名 mail.ReplyTo = new System.Net.Mail.MailAddress(smtpAuthUsername, titel); //收件人 mail.To.Add(list[0]); //邮件优先级 mail.Priority = System.Net.Mail.MailPriority.Normal; //设置html邮件 mail.IsBodyHtml = true; //标题 mail.Subject = subject; //内容 mail.Body = mailHs[var].ToString(); smtp.Send(mail);//;, list[1]); meg = string.Format("{0} {1}邮件发送成功。", System.DateTime.Now.ToString(), list[1]); WriteLog(meg); } catch { meg = string.Format("{0} {1}邮件发送失败。", System.DateTime.Now.ToString(), list[1]); WriteLog(meg); } } }
代码中,我用的是邮件的同步发送、还有一种异步发送,但是两种方式都有自己的应用场景。因为我的功能需求是批量发送工资条,邮箱中的每个人的信息是不同的。所以用同步发送,用hashtable 存储了地址和内容,然后一个循环,发送完成。如果使用跟的批量是一封邮件批量发送多多人,那么就可以用异步发送,这样的话性能上会有所提高,并且避免大数据量下死掉。异步的时候记得用这个回调:
smtp.SendCompleted += new System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback);
这样可以在这个方法中写一些后续的处理,比如发送结果的反馈。我的功能实现中是在一个log.txt文件中写入日志文件。这样在发送完成后,可以查看发送的结果。同步就不说了直接在完成后,写一个方法就ok了。简单又实用,真是居家必备。
分享了!欢迎交流!知识虽小,重在积累。
相关文章推荐
- .net 1.1 下不使用 system.web.mail.smtpmail 发送邮件的其它选择_asp.net技巧
- 使用.NET发送邮件 发送邮件,发邮件,EMail,SMTPMAIL,asp.net 选择自 kwklover 的 Blog
- .NET进阶学习之使用ASP.NET两种发送邮件的方法
- [翻译]ASP.NET MVC 3 开发的20个秘诀(五)[20 Recipes for Programming MVC 3]:发送欢迎邮件
- 使用ASP.NET开发邮件发送系统
- ASP.NET(Web网站开发),简单邮件发送的制作
- 使用ASP.NET开发邮件发送系统
- ASP.NET(Web网站开发),简单邮件发送的制作
- 使用 ASP.NET 开发邮件发送系统
- 使用ASP.NET开发邮件发送系统
- 使用ASP.NET开发邮件发送系统
- C#、ASP.NET、WinForm - 实现邮件发送的功能
- ASP.NET——邮件发送
- asp.net中利用CDONTS发送邮件的列子
- asp.net发送邮件
- asp.net实现发送邮件
- Asp.net 邮件发送总结
- 利用asp.net自带邮件组件 发送邮件,支持126,163,gmail,qq等邮箱
- 【转】【Asp.Net】Asp.net发送邮件的两种方法小结
- ASP.Net环境下使用Jmail组件发送邮件