C#批量发送邮件
作者:C/S框架网  发布日期:2011/05/05 22:59:05
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 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


点击下载附件 点击下载附件 (如下载失败,请邮件通知我们寄回给您,或QQ:23404761留言.)
上一篇 下一篇