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);
} }
本人对”=>“ 写法比太熟悉,请各位大神指教。
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);这段不执行????