コード例 #1
0
        /// <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;
            }
        }
コード例 #2
0
        /// <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);
            }
        }
コード例 #3
0
        /// <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;
                    }
                }
            }
        }