深入Lumisoft.NET实现邮件发送功能的方法详解(2)

private static object locker = new object();
        private void timer_Execute()
        {
            if (Monitor.TryEnter(locker))
            {
                string message = string.Format("在时间 {0} 时刻执行了一次重拨号操作!", DateTime.Now);
                ShowSendStatus(message);

string RasName = SystemConfig.Default.RasName;
                if (!string.IsNullOrEmpty(RasName))
                {
                    message = string.Format("正在准备重新拨号({0})", RasName);
                    ShowSendStatus(message);

Portal.gc.ReConnect(RasName);
                    Portal.gc.FailedCount = 0;//重新归零
                }

Monitor.Exit(locker);
            }
            else
            {
                Monitor.Enter(locker);
                Monitor.Exit(locker);
            }
        }


上面是主要的任务生成操作以及相关的拨号操作,其中任务详细的生成代码如下所示。
private void WorkItemsProducer()

复制代码 代码如下:


{
            CallCtrlWithThreadSafetyEx.SetText(this.txtSendDetail, "");

            EnableControl(false, true, true);
            string message = string.Format("任务开始");
            RecordMessage(message);

#region 生成任务

IWorkItemsGroup workItemsGroup = _workItemsGroup;
            if (null == workItemsGroup)
            {
                return;
            }

List<string> addressList = GetAddressList();
            List<MyMailInfo> mailInfoList = GetMailInfo();
            for (int i = 0; i < addressList.Count; i++)
            {
                try
                {
                    SendJobInfo jobInfo = new SendJobInfo();
                    jobInfo.domainList = mailDomainList;
                    jobInfo.mailTo = addressList[i];
                    jobInfo.mailInfo = GetOneMail(mailInfoList, i);
                    jobInfo.ShowSendStatus = ShowSendStatus;
                    jobInfo.currentDomain = (i % mailDomainList.Count);//设置一个标志,默认那个账户开始发送
                    jobInfo.UseDirectSendType = SystemConfig.Default.EmailDirectSend;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjgxzj.html