/// <summary> /// 异步发送邮件 /// </summary> /// <param name="title"></param> /// <param name="content"></param> /// <param name="toemail"></param> /// <returns></returns> public static bool SendEmail(string title, string content, string toemail) { try { IMember currentMember = null; string managerEmail = SystemSettingsHelper.GetSystemSettingsByKey("manager:email"); if (!toemail.Equals(managerEmail)) { currentMember = ApplicationContext.Current.Services.MemberService.GetByEmail(toemail); } IContentType ct = ApplicationContext.Current.Services.ContentTypeService.GetContentType("EmailRecords"); IContent doc = ApplicationContext.Current.Services.ContentService.CreateContent(title + "|" + DateTime.Now.ToShortDateString(), ct.Id, "EmailRecords"); doc.SetValue("memberId", (currentMember == null && toemail == managerEmail) ? "0" : currentMember.Id.ToString()); doc.SetValue("emailAddress", (currentMember == null && toemail == managerEmail) ? toemail : currentMember.Email); doc.SetValue("title", title); doc.SetValue("content", content); doc.SetValue("isSend", false); doc.SetValue("retryCount", "0"); ApplicationContext.Current.Services.ContentService.Save(doc); Configuration configurationFile = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath); MailSettingsSectionGroup mailSettings = (MailSettingsSectionGroup)configurationFile.GetSectionGroup("system.net/mailSettings"); //开启线程发送邮件 Models.SenMailModel model = new Models.SenMailModel() { Content = content, CurrentSendMailKey = doc.Key, Services = ApplicationContext.Current.Services, Title = title, ToEmail = toemail, UserName = mailSettings.Smtp.Network.UserName, Context = HttpContext.Current }; Thread th = new Thread(TaskSendMail); th.IsBackground = true; th.Start(model); return true; } catch { return false; } }
/// <summary> /// 异步发送邮件 /// </summary> /// <param name="title"></param> /// <param name="content"></param> /// <param name="toemail"></param> /// <returns></returns> public static bool SendEmail(string title, string content, string toemail) { try { IMember currentMember = null; string managerEmail = SystemSettingsHelper.GetSystemSettingsByKey("manager:email"); if (!toemail.Equals(managerEmail)) { currentMember = ApplicationContext.Current.Services.MemberService.GetByEmail(toemail); } IContentType ct = ApplicationContext.Current.Services.ContentTypeService.GetContentType("EmailRecords"); IContent doc = ApplicationContext.Current.Services.ContentService.CreateContent(title + "|" + DateTime.Now.ToShortDateString(), ct.Id, "EmailRecords"); doc.SetValue("memberId", (currentMember == null && toemail == managerEmail) ? "0" : currentMember.Id.ToString()); doc.SetValue("emailAddress", (currentMember == null && toemail == managerEmail) ? toemail : currentMember.Email); doc.SetValue("title", title); doc.SetValue("content", content); doc.SetValue("isSend", false); doc.SetValue("retryCount", "0"); ApplicationContext.Current.Services.ContentService.Save(doc); Configuration configurationFile = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath); MailSettingsSectionGroup mailSettings = (MailSettingsSectionGroup)configurationFile.GetSectionGroup("system.net/mailSettings"); //开启线程发送邮件 Models.SenMailModel model = new Models.SenMailModel() { Content = content, CurrentSendMailKey = doc.Key, Services = ApplicationContext.Current.Services, Title = title, ToEmail = toemail, UserName = mailSettings.Smtp.Network.UserName, Context = HttpContext.Current }; Thread th = new Thread(TaskSendMail); th.IsBackground = true; th.Start(model); return(true); } catch { return(false); } }
/// <summary> /// 线程发送邮件执行 /// </summary> /// <param name="model"></param> private static void TaskSendMail(object model) { Models.SenMailModel sendmodel = (Models.SenMailModel)model; int count; string str = SystemSettingsHelper.GetSystemSettingsByKey("send:mail:count"); if (!int.TryParse(str, out count)) { count = 1; } while (true) { try { if (str == count.ToString() || (string.IsNullOrEmpty(str) && count == 1)) { sendmodel.Content += "<div style='background:url(" + string.Format("http://{0}:{1}/umbraco/API/MailService/EmailTrack/" + sendmodel.CurrentSendMailKey.ToString(), sendmodel.Context.Request.Url.Host, sendmodel.Context.Request.Url.Port) + ")'></div>"; //sendmodel.Content += "<div style='background:url(" + string.Format("http://{0}:{1}/images/100usd.png", sendmodel.Context.Request.Url.Host, sendmodel.Context.Request.Url.Port) + ")'></div>"; //sendmodel.Content += "<link href='" + string.Format("http://{0}:{1}/umbraco/API/MailService/EmailTrack/" + sendmodel.CurrentSendMailKey.ToString(), sendmodel.Context.Request.Url.Host, sendmodel.Context.Request.Url.Port) + "' rel='stylesheet' />"; //sendmodel.Content += "<img src='" + string.Format("http://{0}:{1}/images/100usd.png", sendmodel.Context.Request.Url.Host, sendmodel.Context.Request.Url.Port) + "' />"; } umbraco.library.SendMail(sendmodel.UserName, sendmodel.ToEmail, sendmodel.Title, sendmodel.Content, true); IContent currentContent = sendmodel.Services.ContentService.GetById(sendmodel.CurrentSendMailKey); currentContent.SetValue("retryCount", (currentContent.GetValue <int>("retryCount") + 1)); currentContent.SetValue("isSend", true); currentContent.SetValue("sendTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); sendmodel.Services.ContentService.Save(currentContent); count--; break; } catch (Exception) { if (count <= 0) { break; } } } }