public ActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            var email = _queuedEmailService.GetQueuedEmailById(model.Id);

            if (email == null)
            {
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                _queuedEmailService.UpdateQueuedEmail(email);

                NotifySuccess(T("Admin.System.QueuedEmails.Updated"));
                return(continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List"));
            }

            model.CreatedOn = _dateTimeHelper.ConvertToUserTime(email.CreatedOnUtc, DateTimeKind.Utc);
            if (email.SentOnUtc.HasValue)
            {
                model.SentOn = _dateTimeHelper.ConvertToUserTime(email.SentOnUtc.Value, DateTimeKind.Utc);
            }

            return(View(model));
        }
Beispiel #2
0
        public virtual IActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            //try to get a queued email with the specified id
            var email = _queuedEmailService.GetQueuedEmailById(model.Id);

            if (email == null)
            {
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                _queuedEmailService.UpdateQueuedEmail(email);

                _notificationService.SuccessNotification("The queued email has been updated successfully.");

                return(continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List"));
            }

            //prepare model
            model = _queuedEmailModelFactory.PrepareQueuedEmailModel(model, email, true);

            //if we got this far, something failed, redisplay form
            return(View(model));
        }
Beispiel #3
0
        public ActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
            {
                return(AccessDeniedView());
            }

            var email = _queuedEmailService.GetQueuedEmailById(model.Id);

            if (email == null)
            {
                //No email found with the specified id
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                _queuedEmailService.UpdateQueuedEmail(email);

                SuccessNotification(_localizationService.GetResource("Admin.System.QueuedEmails.Updated"));
                return(continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List"));
            }

            //If we got this far, something failed, redisplay form
            model.PriorityName = email.Priority.GetLocalizedEnum(_localizationService, _workContext);
            model.CreatedOn    = _dateTimeHelper.ConvertToUserTime(email.CreatedOnUtc, DateTimeKind.Utc);
            if (email.SentOnUtc.HasValue)
            {
                model.SentOn = _dateTimeHelper.ConvertToUserTime(email.SentOnUtc.Value, DateTimeKind.Utc);
            }
            return(View(model));
        }
        public ActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
                return AccessDeniedView();

            var email = _queuedEmailService.GetQueuedEmailById(model.Id);
            if (email == null)
                return RedirectToAction("List");

            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                _queuedEmailService.UpdateQueuedEmail(email);

                NotifySuccess(_localizationService.GetResource("Admin.System.QueuedEmails.Updated"));
                return continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List");
            }

            //If we got this far, something failed, redisplay form
            model.CreatedOn = _dateTimeHelper.ConvertToUserTime(email.CreatedOnUtc, DateTimeKind.Utc);
            if (email.SentOnUtc.HasValue)
                model.SentOn = _dateTimeHelper.ConvertToUserTime(email.SentOnUtc.Value, DateTimeKind.Utc);

            return View(model);
		}
        /// <summary>
        /// Executes a task
        /// </summary>
        public void Execute()
        {
            var maxTries     = 3;
            var queuedEmails = _queuedEmailService.SearchEmails(null, null, null, null,
                                                                true, maxTries, false, 0, 10000);

            foreach (var queuedEmail in queuedEmails)
            {
                var bcc = String.IsNullOrWhiteSpace(queuedEmail.Bcc)
                            ? null
                            : queuedEmail.Bcc.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                var cc = String.IsNullOrWhiteSpace(queuedEmail.CC)
                            ? null
                            : queuedEmail.CC.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

                try
                {
                    _emailSender.SendEmail(queuedEmail.EmailAccount, queuedEmail.Subject, queuedEmail.Body,
                                           queuedEmail.From, queuedEmail.FromName, queuedEmail.To, queuedEmail.ToName, bcc, cc);

                    queuedEmail.SentOnUtc = DateTime.UtcNow;
                }
                catch
                {
                }
                finally
                {
                    queuedEmail.SentTries = queuedEmail.SentTries + 1;
                    _queuedEmailService.UpdateQueuedEmail(queuedEmail);
                }
            }
        }
Beispiel #6
0
        /// <summary>
        /// Executes a task
        /// </summary>
        public virtual void Execute()
        {
            var emailAccount = _settingService.LoadSetting <CommonSettings>(default(Guid));

            var maxTries     = 30;
            var queuedEmails = _queuedEmailService.SearchEmails(null, null, null, null,
                                                                true, true, maxTries, false, 0, 500);

            foreach (var queuedEmail in queuedEmails)
            {
                try
                {
                    _emailSender.SendEmail(emailAccount,
                                           queuedEmail.Subject,
                                           queuedEmail.Body,
                                           queuedEmail.From,
                                           queuedEmail.FromName,
                                           queuedEmail.To,
                                           queuedEmail.ToName);

                    queuedEmail.SentDate = DateTime.Now;
                }
                catch (Exception exc)
                {
                    _logger.Error(string.Format("Error sending e-mail. {0}", exc.Message), exc);
                }
                finally
                {
                    queuedEmail.SentTries = queuedEmail.SentTries + 1;
                    _queuedEmailService.UpdateQueuedEmail(queuedEmail);
                }
            }
        }
Beispiel #7
0
        public virtual IActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
            {
                return(AccessDeniedView());
            }

            //try to get a queued email with the specified id
            var email = _queuedEmailService.GetQueuedEmailById(model.Id);

            if (email == null)
            {
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                email.DontSendBeforeDateUtc = model.SendImmediately || !model.DontSendBeforeDate.HasValue ?
                                              null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.DontSendBeforeDate.Value);
                _queuedEmailService.UpdateQueuedEmail(email);

                SuccessNotification(_localizationService.GetResource("Admin.System.QueuedEmails.Updated"));

                return(continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List"));
            }

            //prepare model
            model = _queuedEmailModelFactory.PrepareQueuedEmailModel(model, email, true);

            //if we got this far, something failed, redisplay form
            return(View(model));
        }
Beispiel #8
0
        public IActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            var email = _queuedEmailService.GetQueuedEmailById(model.Id);

            if (email == null)
            {
                //No email found with the specified id
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                email.DontSendBeforeDateUtc = (model.SendImmediately || !model.DontSendBeforeDate.HasValue) ?
                                              null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.DontSendBeforeDate.Value);
                _queuedEmailService.UpdateQueuedEmail(email);

                SuccessNotification(_localizationService.GetResource("Admin.System.QueuedEmails.Updated"));
                return(continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List"));
            }

            //If we got this far, something failed, redisplay form
            model.PriorityName = email.Priority.GetLocalizedEnum(_localizationService, _workContext);
            model.CreatedOn    = _dateTimeHelper.ConvertToUserTime(email.CreatedOnUtc, DateTimeKind.Utc);
            if (email.SentOnUtc.HasValue)
            {
                model.SentOn = _dateTimeHelper.ConvertToUserTime(email.SentOnUtc.Value, DateTimeKind.Utc);
            }
            if (email.DontSendBeforeDateUtc.HasValue)
            {
                model.DontSendBeforeDate = _dateTimeHelper.ConvertToUserTime(email.DontSendBeforeDateUtc.Value, DateTimeKind.Utc);
            }

            return(View(model));
        }
Beispiel #9
0
        /// <summary>
        /// Executes a task
        /// </summary>
        public virtual void Execute()
        {
            var maxTries     = 3;
            var queuedEmails = _queuedEmailService.SearchEmails(null, null, null, null,
                                                                true, maxTries, false, 0, 500);

            foreach (var queuedEmail in queuedEmails)
            {
                var bcc = String.IsNullOrWhiteSpace(queuedEmail.Bcc)
                            ? null
                            : queuedEmail.Bcc.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                var cc = String.IsNullOrWhiteSpace(queuedEmail.CC)
                            ? null
                            : queuedEmail.CC.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

                try
                {
                    _emailSender.SendEmail(queuedEmail.EmailAccount, queuedEmail.Subject, queuedEmail.Body,
                                           queuedEmail.From, queuedEmail.FromName, queuedEmail.To, queuedEmail.ToName, bcc, cc,
                                           queuedEmail.AttachmentFilePath, queuedEmail.AttachmentFileName);

                    queuedEmail.SentOnUtc = DateTime.UtcNow;
                }
                catch (Exception exc)
                {
                    _logger.Error(string.Format("Error sending e-mail. {0}", exc.Message), exc);
                }
                finally
                {
                    queuedEmail.SentTries = queuedEmail.SentTries + 1;
                    _queuedEmailService.UpdateQueuedEmail(queuedEmail);
                }
            }
        }
Beispiel #10
0
        /// <summary>
        /// Executes a task
        /// </summary>
        public void Execute()
        {
            var maxTries     = 3;
            var queuedEmails = _queuedEmailService.SearchEmails(null, null, null, null, true, maxTries, false, 0, 10000);

            foreach (var qe in queuedEmails)
            {
                var bcc = String.IsNullOrWhiteSpace(qe.Bcc)
                            ? null
                            : qe.Bcc.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                var cc = String.IsNullOrWhiteSpace(qe.CC)
                            ? null
                            : qe.CC.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

                try
                {
                    var smtpContext = new SmtpContext(qe.EmailAccount);

                    var msg = new EmailMessage(
                        new EmailAddress(qe.To, qe.ToName),
                        qe.Subject,
                        qe.Body,
                        new EmailAddress(qe.From, qe.FromName));

                    if (qe.ReplyTo.HasValue())
                    {
                        msg.ReplyTo.Add(new EmailAddress(qe.ReplyTo, qe.ReplyToName));
                    }

                    if (cc != null)
                    {
                        msg.Cc.AddRange(cc.Where(x => x.HasValue()).Select(x => new EmailAddress(x)));
                    }

                    if (bcc != null)
                    {
                        msg.Bcc.AddRange(bcc.Where(x => x.HasValue()).Select(x => new EmailAddress(x)));
                    }

                    _emailSender.SendEmail(smtpContext, msg);

                    qe.SentOnUtc = DateTime.UtcNow;
                }
                catch (Exception exc)
                {
                    Logger.Error(string.Format("Error sending e-mail: {0}", exc.Message), exc);
                }
                finally
                {
                    qe.SentTries = qe.SentTries + 1;
                    _queuedEmailService.UpdateQueuedEmail(qe);
                }
            }
        }
Beispiel #11
0
        public ActionResult Edit(QueuedEmailModel model, bool continueEditing)
        {
            var email = _queuedEmailService.GetQueuedEmailById(model.Id);

            if (email == null)
            {
                //No email found with the specified id
                return(RedirectToAction("List"));
            }
            if (ModelState.IsValid)
            {
                email = model.ToEntity(email);
                _queuedEmailService.UpdateQueuedEmail(email);
                SuccessNotification("更新邮件成功");
                return(continueEditing ? RedirectToAction("Edit", new { id = email.Id }) : RedirectToAction("List"));
            }
            return(View(model));
        }
        /// <summary>
        /// Executes a task
        /// </summary>
        public virtual void Execute()
        {
            OnBeforeExecute?.Invoke(this, new EventArgs());
            const int maxTries     = 3;
            var       queuedEmails = _queuedEmailService.SearchEmails(null, null, null, null,
                                                                      true, true, maxTries, false, 0, 500);

            foreach (var queuedEmail in queuedEmails)
            {
                var bcc = string.IsNullOrWhiteSpace(queuedEmail.Bcc)
                            ? null
                            : queuedEmail.Bcc.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                var cc = string.IsNullOrWhiteSpace(queuedEmail.CC)
                            ? null
                            : queuedEmail.CC.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

                try
                {
                    _emailSender.SendEmail(_emailAccountService.GetEmailAccountById(queuedEmail.EmailAccountId),
                                           queuedEmail.Subject,
                                           queuedEmail.Body,
                                           queuedEmail.From,
                                           queuedEmail.FromName,
                                           queuedEmail.To,
                                           queuedEmail.ToName,
                                           queuedEmail.ReplyTo,
                                           queuedEmail.ReplyToName,
                                           bcc,
                                           cc);

                    queuedEmail.SentOnUtc = DateTime.UtcNow;
                }
                catch (Exception exc)
                {
                    _logger.Error($"Error sending e-mail. {exc.Message}", exc);
                }
                finally
                {
                    queuedEmail.SentTries += 1;
                    _queuedEmailService.UpdateQueuedEmail(queuedEmail);
                }
            }
            OnAfterExecute?.Invoke(this, new EventArgs());
        }
Beispiel #13
0
        public virtual async Task <IActionResult> QueuedEmail(
            [FromServices] IWorkContext workContext,
            [FromServices] IQueuedEmailService queuedEmailService,
            string emailId)
        {
            if (!string.IsNullOrEmpty(emailId))
            {
                if (!Request.Headers[HeaderNames.Referer].ToString().ToLowerInvariant().Contains("Admin/QueuedEmail/Edit".ToLowerInvariant()))
                {
                    var eueuedEmail = await queuedEmailService.GetQueuedEmailById(emailId);

                    if (!eueuedEmail.ReadOnUtc.HasValue)
                    {
                        eueuedEmail.ReadOnUtc = DateTime.UtcNow;
                        await queuedEmailService.UpdateQueuedEmail(eueuedEmail);
                    }
                }
            }
            return(File(Convert.FromBase64String("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="), "image/png", "pixel.png"));
        }
Beispiel #14
0
        protected virtual int SendShareInfoNotification(MessageTemplate messageTemplate, EmailAccount emailAccount, int languageId,
                                                        List <Token> tokens, string toEmailAddress, string toName, string attachmentFilePath = null, string attachmentFileName = null)
        {
            //retrieve localized message template data
            var bcc     = messageTemplate.GetLocalized((mt) => mt.BccEmailAddresses, languageId);
            var subject = messageTemplate.GetLocalized((mt) => mt.Subject, languageId);
            var body    = messageTemplate.GetLocalized((mt) => mt.Body, languageId);


            var email = new QueuedEmail()
            {
                Priority           = 5,
                From               = emailAccount.Email,
                FromName           = emailAccount.DisplayName,
                To                 = toEmailAddress,
                ToName             = toName,
                CC                 = string.Empty,
                Bcc                = bcc,
                Subject            = subject,
                Body               = body,
                AttachmentFilePath = attachmentFilePath,
                AttachmentFileName = attachmentFileName,
                CreatedOnUtc       = DateTime.UtcNow,
                EmailAccountId     = emailAccount.Id
            };

            _queuedEmailService.InsertQueuedEmail(email);

            //Replace subject and body tokens
            tokens.Add(new Token("EmailAFriend.SourceMessageId", email.Id.ToString()));
            var subjectReplaced = _tokenizer.Replace(subject, tokens, false);
            var bodyReplaced    = _tokenizer.Replace(body, tokens, true);

            email.Subject = subjectReplaced;
            email.Body    = bodyReplaced;
            _queuedEmailService.UpdateQueuedEmail(email);

            return(email.Id);
        }
Beispiel #15
0
        public HttpResponseMessage EditQueuedEmail(HttpRequestMessage request, QueuedEmailVM model, bool continueEditing = false)
        {
            return(CreateHttpResponse(request, () =>
            {
                HttpResponseMessage response = request.CreateErrorResponse(HttpStatusCode.NotFound, "No items found");
                if (true)
                {
                    var email = _queuedEmailService.GetQueuedEmailById(model.Id);
                    if (email == null)
                    {
                        //No email found with the specified id
                        Url.Route("QueuedEmailSearchModel", null);
                        string nuri = Url.Link("QueuedEmailSearchModel", null);
                        response.Headers.Location = new Uri(nuri);
                        return response;
                    }

                    if (ModelState.IsValid)
                    {
                        email = model.ToEntity(email);
                        email.DontSendBeforeDateUtc = (model.SendImmediately || !model.DontSendBeforeDate.HasValue) ?
                                                      null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.DontSendBeforeDate.Value);
                        _queuedEmailService.UpdateQueuedEmail(email);
                        _baseService.Commit();

                        //SuccessNotification(_localizationService.GetResource("Admin.System.QueuedEmails.Updated"));
                        if (continueEditing)
                        {
                            Url.Route("GetQueuedEmailById", new { id = email.Id });
                            string nUri = Url.Link("GetQueuedEmailById", new { id = email.Id });
                            response.Headers.Location = new Uri(nUri);
                        }
                        else
                        {
                            Url.Route("QueuedEmailSearchModel", null);
                            string nuri = Url.Link("QueuedEmailSearchModel", null);
                            response.Headers.Location = new Uri(nuri);
                        }
                    }
                    else
                    {
                        //If we got this far, something failed, redisplay form
                        model.PriorityName = email.Priority.GetLocalizedEnum(_localizationService, _baseService.WorkContext);
                        model.CreatedOn = _dateTimeHelper.ConvertToUserTime(email.CreatedOnUtc, DateTimeKind.Utc);
                        if (email.SentOnUtc.HasValue)
                        {
                            model.SentOn = _dateTimeHelper.ConvertToUserTime(email.SentOnUtc.Value, DateTimeKind.Utc);
                        }
                        if (email.DontSendBeforeDateUtc.HasValue)
                        {
                            model.DontSendBeforeDate = _dateTimeHelper.ConvertToUserTime(email.DontSendBeforeDateUtc.Value, DateTimeKind.Utc);
                        }

                        response = request.CreateResponse <QueuedEmailVM>(HttpStatusCode.OK, model);
                    }
                }
                else
                {
                    response = request.CreateResponse(HttpStatusCode.Unauthorized, "Unauthorized user");
                }
                return response;
            }));
        }
Beispiel #16
0
 /// <summary>
 /// Updates a queued email
 /// </summary>
 /// <param name="queuedEmail">Queued email</param>
 public void UpdateQueuedEmail(QueuedEmail queuedEmail)
 {
     _queuedEmailService.UpdateQueuedEmail(queuedEmail);
 }