コード例 #1
0
        private int SendEmail(OutEmail om, string to = "")
        {
            if (string.IsNullOrEmpty(to))
            {
                to = om.MailTo;
            }
            if (om.LastTry > DateTime.Now && DateTime.Now > om.LastTry.AddSeconds(TimeInterval))
            {
                return(-1);
            }
            SmtpClient  client   = new SmtpClient();
            string      MailFrom = ConfigurationManager.AppSettings["MailFrom"];
            MailMessage mm       = new MailMessage(MailFrom, to);

            mm.IsBodyHtml      = true;
            mm.SubjectEncoding = Encoding.GetEncoding(1255);
            mm.BodyEncoding    = Encoding.UTF8;
            if (mm.Subject != null)
            {
                mm.Subject = om.Subject.Replace("\r\n", "");
            }
            mm.Body = om.Body;
            try
            {
                client.Send(mm);
                return(0);
            }
            catch (Exception ex)
            {
                SF.LogError(ex);
                return(om.TimesSent + 1);
            }
        }
コード例 #2
0
 public ActionResult _AjaxDelete(OutEmail item, [DataSourceRequest] DataSourceRequest request)
 {
     if (ModelState.IsValid)
     {
         _db.OutEmails.Remove(_db.OutEmails.First(r => r.ID == item.ID));
         _db.SaveChanges();
         CleanCache.CleanOutputCache();
     }
     return(Json(new[] { item }.ToDataSourceResult(request, ModelState)));
 }
コード例 #3
0
        public void Execute()
        {
            using (Db _db = new Db())
            {
                OutEmail om = _db.OutEmails.Where(x => x.SendStatus == OutEmailStatus.NotSendedYet).FirstOrDefault();//get first witout count check, more optimal
                if (om == null)
                {
                    return;
                }
                string mailTo = SF.getValidEmailsString(om.MailTo);
                if (string.IsNullOrEmpty(mailTo))
                {
                    om.SendStatus = OutEmailStatus.SendFailure;//wrong email
                    _db.SaveChanges();
                    return;
                }
                int sent = SendEmail(om, mailTo);
                if (sent == -1)
                {
                    return;
                }
                if (sent == 0)
                {
                    //mark as sended and return
                    om.SendStatus = OutEmailStatus.Sended;
                    om.SendTime   = DateTime.Now;
                    _db.SaveChanges();
                    return;
                }
                if (sent <= TimesToSendMax)
                {
                    om.TimesSent = sent;
                    om.LastTry   = DateTime.Now;
                    // _db.OutEmails.Add(om);
                    _db.SaveChanges();
                }
                else
                {
                    //mark as failure
                    om.SendStatus = OutEmailStatus.SendFailure;

                    _db.SaveChanges();
                }
            }
        }
コード例 #4
0
        private int Tokenize(string SystemName, string ToEmail, IList <object> models)
        {
            if (_isGetTokensOnly)
            {
                tokens = new List <string>();
                foreach (var o in models)
                {
                    if (o == null)
                    {
                        continue;
                    }

                    var t          = o.GetType();
                    var properties = t.GetProperties();
                    foreach (var p in properties)
                    {
                        tokens.Add(string.Format("%{0}.{1}%", t.Name, p.Name)); // %Order.Total% -> $345.34
                    }
                }
                return(0);
            }
            var LanguageCode = SF.GetLangCodeThreading();
            var mailTemplate = _Context.EntityContext.MessageTemplates.FirstOrDefault(x => x.SystemName == SystemName && x.LanguageCode == LanguageCode);

            if (mailTemplate != null && mailTemplate.Active && !string.IsNullOrEmpty(ToEmail))
            {
                StringBuilder Subject = new StringBuilder(mailTemplate.Subject);
                StringBuilder Body    = new StringBuilder(mailTemplate.Body);

                string log = "";
                if (mailTemplate.SystemName == "Order.UserCantPay.EmailToAdmin")
                {
                    log += @"LOG mail template data
";
                }
                foreach (var o in models)
                {
                    if (o == null)
                    {
                        continue;
                    }

                    var t          = o.GetType();
                    var properties = t.GetProperties();
                    foreach (var p in properties)
                    {
                        string repl  = "";
                        var    value = p.GetValue(o);
                        if (value != null)
                        {
                            repl = value.ToString();
                        }
                        if (mailTemplate.SystemName == "Order.UserCantPay.EmailToAdmin")
                        {
                            log += string.Format("{0}.{1}", t.Name, p.Name) + @" = " + repl + @"
";
                        }
                        Subject.Replace(string.Format("%{0}.{1}%", t.Name, p.Name), repl); // %Order.Total% -> $345.34
                        Body.Replace(string.Format("%{0}.{1}%", t.Name, p.Name), repl);    // %Order.Total% -> $345.34
                    }
                }
                if (mailTemplate.SystemName == "Order.UserCantPay.EmailToAdmin")
                {
                    log += @"
template Body:
" + mailTemplate.Body;
                    log += @"
template Subject:
" + mailTemplate.Subject;

                    log += @"
result Body:
" + Body.ToString();
                    log += @"
result Subject:
" + Subject.ToString();

                    var acitvitylog = new ActivityLog()
                    {
                        CreateOn     = DateTime.Now,
                        FullText     = log,
                        UserID       = Guid.Empty,
                        ActivityType = ActivityType.Other
                    };
                    _Context.EntityContext.ActivityLogs.Add(acitvitylog);
                    _Context.EntityContext.SaveChanges();
                }
                var email = new OutEmail()
                {
                    Body    = Body.ToString(),
                    Subject = Subject.ToString(),
                    MailTo  = ToEmail,
                };

                _Context.EntityContext.OutEmails.Add(email);
                _Context.EntityContext.SaveChanges();
                return(email.ID);
            }
            if (mailTemplate == null)
            {
                //add to log or create automatic
                var template = new MessageTemplate()
                {
                    Active       = false,
                    Body         = "Auto generated, please change",
                    LanguageCode = SF.GetLangCodeThreading(),
                    Subject      = "Auto generated",
                    SystemName   = SystemName
                };
                _Context.EntityContext.MessageTemplates.Add(template);
                _Context.EntityContext.SaveChanges();
            }
            return(0);
        }