惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 邢少

IM客户端Socks 5代理协议应用 招聘程序员的方法 CAS 与.net 集成的 “循环重定向”问题分析 .net 开发 跬步篇(6〕—绝对路径转换相对路径的 麻雀虽小,五脏俱全-C# 创建windows服务、socket通讯实例 asp.net 跬步篇(5) repeater 自定义模板实现特殊样式控件 asp.net 跬步篇(4) EnableSessionState设置 引起的框架集加载问题 控制CPU曲线引发的感想 驱驾ViewState利剑—压缩ViewState 如何驾驭ViewState利剑 编程“方便面”之用户控件 天气数据一把抓。 .NET程序员应该知道些什么[转载] asp.net 开发 跬步篇(2) JQuery +ashx 升级之 JSon asp.net 开发 跬步篇〔1〕_ajax web页面复杂处理延时、客户交互问题 Asp .net +jquery +.ashx 文件实现分页 Gridview repeater datelist 区别 [技术思考]一段时间后的回首。 粮食的存在
asp.net 开发 跬步篇〔3〕.net 邮件批量发送
邢少 · 2010-02-25 · via 博客园 - 邢少

2010-02-25 17:21  邢少  阅读(2947)  评论()    收藏  举报

     最近的一个项目中,有一个批量发送工资条的功能,貌似很神秘,其实很简单。以前就知道.net中各有一个专门实现Email发送的命名空间,刚好这次可以实践一下。在这又得赞美一下.net,哈哈真是太会办事了,简单实现。

     废话不在多说,直接切入主题吧。功能的需求是每个月在生成工资报表后触发操作,可以批量发送到地址薄中的各个员工的邮箱中。所以我就写了一个发送邮件的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了。简单又实用,真是居家必备。

  分享了!欢迎交流!知识虽小,重在积累。

作者:邢少

关于作者:从业至今一直从事软件前沿的分析设计工作,对软件开发过程、项目管理有浓厚的兴趣。如有想法、建议,请多多赐教

本文版权归作者和博客园共有,欢迎转载,但未经作者同意请保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过 xingshaoxian@163.com 与我联系,非常感谢。