public static void SendQueuedEmails(int failureInterval, int maxNumberOfTries)
        {
            string fromEmail = System.Configuration.ConfigurationManager.AppSettings["FromEmail"];
            string mailServerUserName = System.Configuration.ConfigurationManager.AppSettings["MailServerUserName"];
            string mailServerPassWord = System.Configuration.ConfigurationManager.AppSettings["MailServerPassWord"];
            string sendServer = System.Configuration.ConfigurationManager.AppSettings["SendServer"];
            short connectionLimit = Convert.ToInt16(System.Configuration.ConfigurationManager.AppSettings["SmtpServerConnectionLimit"]);
            List<EmailQueue> queues = EmailQueue.Provider.Select();
            ArrayList failure = new ArrayList();
            //SmtpClient smtp = new SmtpClient(sendServer);
            //smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
            int sentCount = 0;
            int totalSent = 0;            foreach (EmailQueue queue in queues)
            {
                    ThreadPool.QueueUserWorkItem(p =>
                    {
                        try
                        {
                                EmailQueue eq = (EmailQueue)p;
                                SmtpClient smtp = new SmtpClient(sendServer);
                                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;                                EmailTemplate email = new EmailTemplate(eq);
                                smtp.Credentials = new System.Net.NetworkCredential(mailServerUserName, mailServerPassWord);
                                if (email.From == null)
                                    email.From = new MailAddress(mailServerUserName);
                                smtp.Send(email);
                                //添加队列历史记录
                                EmailQueueHistory queueHistory = new EmailQueueHistory();
                                queueHistory.EmailID = eq.EmailID;
                                queueHistory.EmailPriority = eq.EmailPriority;
                                queueHistory.EmailBodyFormat = eq.EmailBodyFormat;
                                queueHistory.EmailTo = eq.EmailTo;
                                queueHistory.EmailCc = eq.EmailCc;
                                queueHistory.EmailBcc = eq.EmailBcc;
                                queueHistory.EmailFrom = eq.EmailFrom;
                                queueHistory.EmailSubject = eq.EmailSubject;
                                queueHistory.EmailBody = eq.EmailBody;
                                queueHistory.NextTryTime = eq.NextTryTime;
                                queueHistory.NumberOfTries = eq.NumberOfTries;
                                queueHistory.SettingsID = eq.SettingsID;
                                queueHistory.AttachNames = eq.AttachNames;
                                queueHistory.EmailSendTime = DateTime.Now;
                                EmailQueueHistory.Provider.Insert(queueHistory);
                               //本地执行,上传到服务器不执行Insert 方法,程序编译了n次。服务器运用程序池.net framework 2.0 本机开发代码为 .net framework 4.0。
                                EmailQueue.Provider.Delete(eq);
                                if (connectionLimit != -1 && ++sentCount >= connectionLimit)
                                {
                                    Thread.Sleep(new TimeSpan(0, 0, 0, 15, 0));
                                    sentCount = 0;
                                }
                        }
                        catch (Exception e)
                        {
                            log.Error("Email Send failure", e);
                        }                    },queue);                
            }        }
本人对”=>“ 写法比太熟悉,请各位大神指教。

解决方案 »

  1.   

    lambda表达式,自己看帮助吧,理解为委托
      

  2.   

    //添加队列历史记录
    EmailQueueHistory queueHistory = new EmailQueueHistory();
    queueHistory.EmailID = eq.EmailID;
    queueHistory.EmailPriority = eq.EmailPriority;
    queueHistory.EmailBodyFormat = eq.EmailBodyFormat;
    queueHistory.EmailTo = eq.EmailTo;
    queueHistory.EmailCc = eq.EmailCc;
    queueHistory.EmailBcc = eq.EmailBcc;
    queueHistory.EmailFrom = eq.EmailFrom;
    queueHistory.EmailSubject = eq.EmailSubject;
    queueHistory.EmailBody = eq.EmailBody;
    queueHistory.NextTryTime = eq.NextTryTime;
    queueHistory.NumberOfTries = eq.NumberOfTries;
    queueHistory.SettingsID = eq.SettingsID;
    queueHistory.AttachNames = eq.AttachNames;
    queueHistory.EmailSendTime = DateTime.Now;
    EmailQueueHistory.Provider.Insert(queueHistory);
    //本地执行,上传到服务器不执行Insert 方法,程序编译了n次。
    //服务器运用程序池.net framework 2.0 本机开发代码为 .net framework 4.0。
    EmailQueue.Provider.Delete(eq);这段不执行????