C#批量发送邮件
C#批量发送邮件学习要点:SmtpClient组件,多线程,交叉线程访问,委托等。
C# Code:
/// <summary>
/// 更新进程条,显示当前已发送的邮件
/// </summary>
public delegate void UpdateProcessEvent(int index, string currentAddr);
/// <summary>
/// 线程处理完成时调用该事件通知客户.
/// </summary>
public delegate void OnThreadFinished();
//来源:C/S框架网(www.csframework.com) QQ:1980854898
C# Code:
/// <summary>
/// 更新进程条,显示当前已发送的邮件
/// </summary>
public delegate void UpdateProcessEvent(int index, string currentAddr);
/// <summary>
/// 线程处理完成时调用该事件通知客户.
/// </summary>
public delegate void OnThreadFinished();
//来源:C/S框架网(www.csframework.com) QQ:1980854898
C# Code:
/// <summary>
/// 用于记录当前已发送的邮件地址索引,再次发送将从这个索引开始.
/// </summary>
public int CurrentIndex { get { return _mailIndex; } }
/// <summary>
/// 由线程调用的方法
/// </summary>
/// <param name="obj"></param>
private void DoSendMails(object obj)
{
if (obj != null && obj is string[])
{
string[] emails = obj as string[];
bool success = false;
while (_mailIndex <= emails.Length - 1)
{
success = MailSender.Send(emails[_mailIndex], _subject, _mailBody, null, false);
if (success)//访问其它线程创建的控件,需要调用Invoke方法
_owner.Invoke(_event, _mailIndex 1, emails[_mailIndex]);
_mailIndex ;//增加计数器
}
//线程执行完成
_mailIndex = 0;//复位
_owner.Invoke(_finish);
_thread.Abort();
}
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
/// <summary>
/// 用于记录当前已发送的邮件地址索引,再次发送将从这个索引开始.
/// </summary>
public int CurrentIndex { get { return _mailIndex; } }
/// <summary>
/// 由线程调用的方法
/// </summary>
/// <param name="obj"></param>
private void DoSendMails(object obj)
{
if (obj != null && obj is string[])
{
string[] emails = obj as string[];
bool success = false;
while (_mailIndex <= emails.Length - 1)
{
success = MailSender.Send(emails[_mailIndex], _subject, _mailBody, null, false);
if (success)//访问其它线程创建的控件,需要调用Invoke方法
_owner.Invoke(_event, _mailIndex 1, emails[_mailIndex]);
_mailIndex ;//增加计数器
}
//线程执行完成
_mailIndex = 0;//复位
_owner.Invoke(_finish);
_thread.Abort();
}
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网