Ejemplo n.º 1
0
        public void SendMiniSiteActivationEmail(int miniSiteId, int languageId)
        {
            var miniSite = _miniSiteService.GetMiniSiteById(miniSiteId);
            //MiniSiteNew

            var template = _messageTemplateService.GetMessageTemplateByName("MiniSiteNew");

            template.Subject = template.GetLocalized(x => x.Subject, languageId, false, false);
            template.Body    = template.GetLocalized(x => x.Body, languageId, false, false);

            //template
            var tokens = new List <Token>();

            _messageTokenProvider.AddStoreTokens(tokens);
            _messageTokenProvider.AddNewMiniSiteTokens(tokens, miniSite);
            string subject = _tokenizer.Replace(template.Subject, tokens, true);
            string body    = _tokenizer.Replace(template.Body, tokens, true);

            var emailAccount = _emailAccountService.GetEmailAccountById(_emailAccountSettings.DefaultEmailAccountId);
            var email        = new QueuedEmail()
            {
                Priority       = 3,
                From           = emailAccount.Email,
                FromName       = emailAccount.DisplayName,
                To             = emailAccount.Email,
                Subject        = subject,
                Body           = body,
                CreatedOnUtc   = DateTime.UtcNow,
                EmailAccountId = emailAccount.Id
            };

            _queuedEmailService.InsertQueuedEmail(email);
        }
Ejemplo n.º 2
0
        public ActionResult Requeue(QueuedEmailModel queuedEmailModel)
        {
            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);

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

            var requeuedEmail = new QueuedEmail
            {
                Priority       = queuedEmail.Priority,
                From           = queuedEmail.From,
                To             = queuedEmail.To,
                CC             = queuedEmail.CC,
                Bcc            = queuedEmail.Bcc,
                Subject        = queuedEmail.Subject,
                Body           = queuedEmail.Body,
                CreatedOnUtc   = DateTime.UtcNow,
                EmailAccountId = queuedEmail.EmailAccountId,
                SendManually   = queuedEmail.SendManually
            };

            _queuedEmailService.InsertQueuedEmail(requeuedEmail);

            NotifySuccess(T("Admin.System.QueuedEmails.Requeued"));

            return(RedirectToAction("Edit", requeuedEmail.Id));
        }
        /// <summary>
        /// Sends SMS
        /// </summary>
        /// <param name="text">SMS text</param>
        /// <returns>Result</returns>
        public bool SendSms(string text)
        {
            try
            {
                var emailAccount = _emailAccountService.GetEmailAccountById(_emailAccountSettings.DefaultEmailAccountId);
                if (emailAccount == null)
                {
                    emailAccount = _emailAccountService.GetAllEmailAccounts().FirstOrDefault();
                }

                var queuedEmail = new QueuedEmail()
                {
                    Priority       = 5,
                    From           = emailAccount.Email,
                    FromName       = emailAccount.DisplayName,
                    To             = _verizonSettings.Email,
                    ToName         = string.Empty,
                    Subject        = _storeSettings.StoreName,
                    Body           = text,
                    CreatedOnUtc   = DateTime.UtcNow,
                    EmailAccountId = emailAccount.Id
                };

                _queuedEmailService.InsertQueuedEmail(queuedEmail);

                return(true);
            }
            catch (Exception ex)
            {
                _logger.Error(ex.Message, ex);
                return(false);
            }
        }
Ejemplo n.º 4
0
        public ActionResult Requeue(QueuedEmailModel queuedEmailModel)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
            {
                return(AccessDeniedView());
            }

            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);

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

            var requeuedEmail = new QueuedEmail()
            {
                Priority       = queuedEmail.Priority,
                From           = queuedEmail.From,
                FromName       = queuedEmail.FromName,
                To             = queuedEmail.To,
                ToName         = queuedEmail.ToName,
                CC             = queuedEmail.CC,
                Bcc            = queuedEmail.Bcc,
                Subject        = queuedEmail.Subject,
                Body           = queuedEmail.Body,
                CreatedOnUtc   = DateTime.UtcNow,
                EmailAccountId = queuedEmail.EmailAccountId
            };

            _queuedEmailService.InsertQueuedEmail(requeuedEmail);

            SuccessNotification(_localizationService.GetResource("Admin.System.QueuedEmails.Requeued"));
            return(RedirectToAction("Edit", requeuedEmail.Id));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Sends SMS
        /// </summary>
        /// <param name="text">SMS text</param>
        /// <returns>Result</returns>
        public bool SendSms(string text)
        {
            try
            {
                var emailAccount = _emailAccountService.GetDefaultEmailAccount();
                if (emailAccount == null)
                {
                    throw new Exception(_services.Localization.GetResource("Common.Error.NoEmailAccount"));
                }

                var queuedEmail = new QueuedEmail
                {
                    Priority       = 5,
                    From           = emailAccount.ToEmailAddress(),
                    To             = _verizonSettings.Email,
                    Subject        = _services.StoreContext.CurrentStore.Name,
                    Body           = text,
                    CreatedOnUtc   = DateTime.UtcNow,
                    EmailAccountId = emailAccount.Id
                };

                _queuedEmailService.InsertQueuedEmail(queuedEmail);

                return(true);
            }
            catch (Exception exception)
            {
                _logger.ErrorsAll(exception);
                return(false);
            }
        }
Ejemplo n.º 6
0
        public void SendNewsPublicationNotification(NewsItem newItem)
        {
            if (newItem == null)
            {
                throw new ArgumentNullException("new item");
            }
            var account  = _emailAccountService.GetEmailAccountById(_emailAccountSettings.DefaultEmailAccountId);
            var customer = newItem.Customer;
            var template = _messageTemplateService.GetMessageTemplateByName("NewPublishing");

            template.Subject = template.GetLocalized(x => x.Subject, newItem.LanguageId);
            template.Body    = template.GetLocalized(x => x.Body, newItem.LanguageId);
            var tokens = new List <Token>();

            _mesageTokenProvider.AddNewPublishingToken(tokens, newItem);
            _mesageTokenProvider.AddStoreTokens(tokens);
            template.Subject = _tokenizer.Replace(template.Subject, tokens, false);
            template.Body    = _tokenizer.Replace(template.Body, tokens, false);
            var email = new QueuedEmail()
            {
                Priority       = 3,
                From           = account.Email,
                FromName       = account.DisplayName,
                To             = customer.Email,
                Subject        = template.Subject,
                Body           = template.Body,
                CreatedOnUtc   = DateTime.UtcNow,
                EmailAccountId = account.Id
            };

            _queuedEmailService.InsertQueuedEmail(email);
        }
Ejemplo n.º 7
0
        private int SendNotification(MessageTemplate messageTemplate,
                                     EmailAccount emailAccount, int languageId, IEnumerable <Token> tokens,
                                     string toEmailAddress, string toName)
        {
            //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);

            //Replace subject and body tokens
            var subjectReplaced = _tokenizer.Replace(subject, tokens, false);
            var bodyReplaced    = _tokenizer.Replace(body, tokens, false);

            var email = new QueuedEmail()
            {
                Priority       = QueuedEmailPriority.High,
                From           = emailAccount.Email,
                FromName       = emailAccount.DisplayName,
                To             = toEmailAddress,
                ToName         = toName,
                CC             = string.Empty,
                Bcc            = bcc,
                Subject        = subjectReplaced,
                Body           = bodyReplaced,
                CreatedOnUtc   = DateTime.UtcNow,
                EmailAccountId = emailAccount.Id
            };

            _queuedEmailService.InsertQueuedEmail(email);
            return(email.Id);
        }
        public ActionResult Requeue(QueuedEmailModel queuedEmailModel)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
                return AccessDeniedView();

            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);
            if (queuedEmail == null)
                return RedirectToAction("List");

            var requeuedEmail = new QueuedEmail
            {
                Priority = queuedEmail.Priority,
                From = queuedEmail.From,
                To = queuedEmail.To,
                CC = queuedEmail.CC,
                Bcc = queuedEmail.Bcc,
                Subject = queuedEmail.Subject,
                Body = queuedEmail.Body,
                CreatedOnUtc = DateTime.UtcNow,
                EmailAccountId = queuedEmail.EmailAccountId,
				SendManually = queuedEmail.SendManually
            };
            _queuedEmailService.InsertQueuedEmail(requeuedEmail);

            NotifySuccess(_localizationService.GetResource("Admin.System.QueuedEmails.Requeued"));

            return RedirectToAction("Edit", requeuedEmail.Id);
        }
Ejemplo n.º 9
0
        public virtual IActionResult Requeue(QueuedEmailModel queuedEmailModel)
        {
            //try to get a queued email with the specified id
            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);

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

            var requeuedEmail = new QueuedEmail
            {
                From         = queuedEmail.From,
                FromName     = queuedEmail.FromName,
                To           = queuedEmail.To,
                ToName       = queuedEmail.ToName,
                ReplyTo      = queuedEmail.ReplyTo,
                ReplyToName  = queuedEmail.ReplyToName,
                CC           = queuedEmail.CC,
                Bcc          = queuedEmail.Bcc,
                Subject      = queuedEmail.Subject,
                Body         = queuedEmail.Body,
                CreatedOnUtc = DateTime.UtcNow
            };

            _queuedEmailService.InsertQueuedEmail(requeuedEmail);

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

            return(RedirectToAction("Edit", new { id = requeuedEmail.Id }));
        }
Ejemplo n.º 10
0
        public ActionResult Requeue(QueuedEmailModel queuedEmailModel)
        {
            var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);

            if (queuedEmail == null)
            {
                //No email found with the specified id
                return(RedirectToAction("List"));
            }
            var requeuedEmail = new QueuedEmail
            {
                PriorityId         = queuedEmail.PriorityId,
                From               = queuedEmail.From,
                FromName           = queuedEmail.FromName,
                To                 = queuedEmail.To,
                ToName             = queuedEmail.ToName,
                ReplyTo            = queuedEmail.ReplyTo,
                ReplyToName        = queuedEmail.ReplyToName,
                CC                 = queuedEmail.CC,
                Bcc                = queuedEmail.Bcc,
                Subject            = queuedEmail.Subject,
                Body               = queuedEmail.Body,
                AttachmentFilePath = queuedEmail.AttachmentFilePath,
                AttachmentFileName = queuedEmail.AttachmentFileName,
                AttachedDownloadId = queuedEmail.AttachedDownloadId,
                CreatedOn          = DateTime.Now,
                EmailAccountId     = queuedEmail.EmailAccountId,
                //DontSendBeforeDateUtc = (queuedEmailModel.SendImmediately || !queuedEmailModel.DontSendBeforeDate.HasValue) ?
                //   null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(queuedEmailModel.DontSendBeforeDate.Value)
            };

            _queuedEmailService.InsertQueuedEmail(requeuedEmail);
            SuccessNotification("修改邮件队列成功");
            return(RedirectToAction("Edit", new { id = requeuedEmail.Id }));
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Send notification
        /// </summary>
        /// <param name="messageTemplate">Message template</param>
        /// <param name="emailAccount">Email account</param>
        /// <param name="languageId">Language identifier</param>
        /// <param name="tokens">Tokens</param>
        /// <param name="toEmailAddress">Recipient email address</param>
        /// <param name="toName">Recipient name</param>
        /// <param name="attachmentFilePath">Attachment file path</param>
        /// <param name="attachmentFileName">Attachment file name</param>
        /// <param name="replyToEmailAddress">"Reply to" email</param>
        /// <param name="replyToName">"Reply to" name</param>
        /// <param name="fromEmail">Sender email. If specified, then it overrides passed "emailAccount" details</param>
        /// <param name="fromName">Sender name. If specified, then it overrides passed "emailAccount" details</param>
        /// <param name="subject">Subject. If specified, then it overrides subject of a message template</param>
        /// <returns>Queued email identifier</returns>
        public virtual int SendNotification(MessageTemplate messageTemplate,
                                            EmailAccount emailAccount, int languageId, IEnumerable <Token> tokens,
                                            string toEmailAddress, string toName,
                                            string attachmentFilePath  = null, string attachmentFileName = null,
                                            string replyToEmailAddress = null, string replyToName        = null,
                                            string fromEmail           = null, string fromName = null, string subject = null)
        {
            if (messageTemplate == null)
            {
                throw new ArgumentNullException(nameof(messageTemplate));
            }

            if (emailAccount == null)
            {
                throw new ArgumentNullException(nameof(emailAccount));
            }

            //retrieve localized message template data
            var bcc = _localizationService.GetLocalized(messageTemplate, mt => mt.BccEmailAddresses, languageId);

            if (string.IsNullOrEmpty(subject))
            {
                subject = _localizationService.GetLocalized(messageTemplate, mt => mt.Subject, languageId);
            }
            var body = _localizationService.GetLocalized(messageTemplate, mt => mt.Body, languageId);

            //Replace subject and body tokens
            var subjectReplaced = _tokenizer.Replace(subject, tokens, false);
            var bodyReplaced    = _tokenizer.Replace(body, tokens, true);

            //limit name length
            toName = CommonHelper.EnsureMaximumLength(toName, 300);

            var email = new QueuedEmail
            {
                Priority              = QueuedEmailPriority.High,
                From                  = !string.IsNullOrEmpty(fromEmail) ? fromEmail : emailAccount.Email,
                FromName              = !string.IsNullOrEmpty(fromName) ? fromName : emailAccount.DisplayName,
                To                    = toEmailAddress,
                ToName                = toName,
                ReplyTo               = replyToEmailAddress,
                ReplyToName           = replyToName,
                CC                    = string.Empty,
                Bcc                   = bcc,
                Subject               = subjectReplaced,
                Body                  = bodyReplaced,
                AttachmentFilePath    = attachmentFilePath,
                AttachmentFileName    = attachmentFileName,
                AttachedDownloadId    = messageTemplate.AttachedDownloadId,
                CreatedOnUtc          = DateTime.UtcNow,
                EmailAccountId        = emailAccount.Id,
                DontSendBeforeDateUtc = !messageTemplate.DelayBeforeSend.HasValue ? null
                    : (DateTime?)(DateTime.UtcNow + TimeSpan.FromHours(messageTemplate.DelayPeriod.ToHours(messageTemplate.DelayBeforeSend.Value)))
            };

            _queuedEmailService.InsertQueuedEmail(email);
            return(email.Id);
        }
Ejemplo n.º 12
0
        public ActionResult ContactUsSend(ContactUsModel model, bool captchaValid)
        {
            //validate CAPTCHA
            if (_captchaSettings.Enabled && _captchaSettings.ShowOnContactUsPage && !captchaValid)
            {
                ModelState.AddModelError("", _localizationService.GetResource("Common.WrongCaptcha"));
            }

            if (ModelState.IsValid)
            {
                string email    = model.Email.Trim();
                string fullName = model.FullName;
                string subject  = string.Format(_localizationService.GetResource("ContactUs.EmailSubject"), _storeInformationSettings.StoreName);

                var emailAccount = _emailAccountService.GetEmailAccountById(_emailAccountSettings.DefaultEmailAccountId);
                if (emailAccount == null)
                {
                    emailAccount = _emailAccountService.GetAllEmailAccounts().FirstOrDefault();
                }

                string from     = null;
                string fromName = null;
                string body     = Core.Html.HtmlHelper.FormatText(model.Enquiry, false, true, false, false, false, false);
                //required for some SMTP servers
                if (_commonSettings.UseSystemEmailForContactUsForm)
                {
                    from     = emailAccount.Email;
                    fromName = emailAccount.DisplayName;
                    body     = string.Format("<strong>From</strong>: {0} - {1}<br /><br />{2}",
                                             Server.HtmlEncode(fullName),
                                             Server.HtmlEncode(email), body);
                }
                else
                {
                    from     = email;
                    fromName = fullName;
                }
                _queuedEmailService.InsertQueuedEmail(new QueuedEmail()
                {
                    From           = from,
                    FromName       = fromName,
                    To             = emailAccount.Email,
                    ToName         = emailAccount.DisplayName,
                    Priority       = 5,
                    Subject        = subject,
                    Body           = body,
                    CreatedOnUtc   = DateTime.UtcNow,
                    EmailAccountId = emailAccount.Id
                });

                model.SuccessfullySent = true;
                model.Result           = _localizationService.GetResource("ContactUs.YourEnquiryHasBeenSent");
                return(View(model));
            }

            model.DisplayCaptcha = _captchaSettings.Enabled && _captchaSettings.ShowOnContactUsPage;
            return(View(model));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Sends a campaign to specified emails
        /// </summary>
        /// <param name="campaign">Campaign</param>
        /// <param name="emailAccount">Email account</param>
        /// <param name="subscriptions">Subscriptions</param>
        /// <returns>Total emails sent</returns>
        public virtual int SendCampaign(Campaign campaign, EmailAccount emailAccount, IEnumerable <NewsLetterSubscription> subscriptions)
        {
            if (campaign == null)
            {
                throw new ArgumentNullException("campaign");
            }

            if (emailAccount == null)
            {
                throw new ArgumentNullException("emailAccount");
            }

            if (subscriptions == null || subscriptions.Count() <= 0)
            {
                return(0);
            }

            int totalEmailsSent = 0;

            var subscriptionData = subscriptions
                                   .Where(x => _storeMappingService.Authorize <Campaign>(campaign, x.StoreId))
                                   .GroupBy(x => x.Email);

            foreach (var group in subscriptionData)
            {
                var subscription = group.First();                       // only one email per email address

                var tokens = new List <Token>();
                _messageTokenProvider.AddStoreTokens(tokens, _storeContext.CurrentStore);
                _messageTokenProvider.AddNewsLetterSubscriptionTokens(tokens, subscription);

                var customer = _customerService.GetCustomerByEmail(subscription.Email);
                if (customer != null)
                {
                    _messageTokenProvider.AddCustomerTokens(tokens, customer);
                }

                string subject = _tokenizer.Replace(campaign.Subject, tokens, false);
                string body    = _tokenizer.Replace(campaign.Body, tokens, true);

                var email = new QueuedEmail()
                {
                    Priority       = 3,
                    From           = emailAccount.Email,
                    FromName       = emailAccount.DisplayName,
                    To             = subscription.Email,
                    Subject        = subject,
                    Body           = body,
                    CreatedOnUtc   = DateTime.UtcNow,
                    EmailAccountId = emailAccount.Id
                };

                _queuedEmailService.InsertQueuedEmail(email);
                totalEmailsSent++;
            }
            return(totalEmailsSent);
        }
Ejemplo n.º 14
0
        public ActionResult Contacts(Nop.Web.Areas.MiniSite.Models.Common.ContactUsModel model, bool captchaValid = true)
        {
            if (ModelState.IsValid)
            {
                string email     = model.Email.Trim();
                string fullName  = model.FullName;
                string StoreName = _workContext.CurrentMiniSite.MiniSiteLayout.RootTitle;
                string subject   = string.Format(_localizationService.GetResource("ContactUs.EmailSubject"), StoreName);

                var emailAccount = _emailAccountService.GetEmailAccountById(_emailAccountSettings.DefaultEmailAccountId);
                if (emailAccount == null)
                {
                    emailAccount = _emailAccountService.GetAllEmailAccounts().FirstOrDefault();
                }

                string from     = null;
                string fromName = null;
                string body     = Core.Html.HtmlHelper.FormatText(model.Enquiry, false, true, false, false, false, false);
                //required for some SMTP servers
                if (_commonSettings.UseSystemEmailForContactUsForm)
                {
                    from     = emailAccount.Email;
                    fromName = emailAccount.DisplayName;
                    body     = string.Format("<strong>From</strong>: {0} - {1}<br />Company: {3} <br /><br />{2}",
                                             Server.HtmlEncode(fullName),
                                             Server.HtmlEncode(email), body, model.Company);
                }
                else
                {
                    from     = email;
                    fromName = fullName;
                }
                _queuedEmailService.InsertQueuedEmail(new QueuedEmail()
                {
                    From           = from,
                    FromName       = fromName,
                    To             = _workContext.CurrentMiniSite.ContactEmail ?? _workContext.CurrentMiniSite.Customer.Email,
                    ToName         = _workContext.CurrentMiniSite.Customer.Username,
                    Priority       = 5,
                    Subject        = subject,
                    Body           = body,
                    CreatedOnUtc   = DateTime.UtcNow,
                    EmailAccountId = emailAccount.Id
                });

                model.SuccessfullySent = true;
                model.Result           = _localizationService.GetResource("ContactUs.YourEnquiryHasBeenSent");
                model.Company          = null;
                model.Email            = null;
                model.Enquiry          = null;
                model.FullName         = null;

                //activity log
                return(View("Contacts", model));
            }
            return(View("Contacts", model));
        }
Ejemplo n.º 15
0
        public ActionResult ContactUsSend(ContactUsModel model)
        {
            if (ModelState.IsValid)
            {
                string email    = model.Email.Trim();
                string fullName = model.FullName;
                string subject  = string.Format("{0}. {1}", _storeInformationSettings.StoreName, "Contact us");

                var emailAccount = _emailAccountService.GetEmailAccountById(_emailAccountSettings.DefaultEmailAccountId);

                string from     = null;
                string fromName = null;
                string body     = Core.Html.HtmlHelper.FormatText(model.Enquiry, false, true, false, false, false, false);

                if (_commonSettings.UseSystemEmailForContactUsForm)
                {
                    from     = emailAccount.Email;
                    fromName = emailAccount.DisplayName;
                    body     = string.Format("<b>From</b>: {0} - {1}<br /><br />{2}",
                                             Server.HtmlEncode(fullName),
                                             Server.HtmlEncode(email), body);
                }
                else
                {
                    from     = email;
                    fromName = fullName;
                }
                _queuedEmailService.InsertQueuedEmail(new QueuedEmail()
                {
                    From           = from,
                    FromName       = fromName,
                    To             = emailAccount.Email,
                    ToName         = emailAccount.DisplayName,
                    Priority       = 5,
                    Subject        = subject,
                    Body           = body,
                    CreatedOnUtc   = DateTime.UtcNow,
                    EmailAccountId = emailAccount.Id
                });

                return(Json(new { SuccessfullySent = true, Result = _localizationService.GetResource("ContactUs.YourEnquiryHasBeenSent") }));
            }


            var errors = new List <string>();

            foreach (var modelState in ModelState.Values)
            {
                foreach (var error in modelState.Errors)
                {
                    errors.Add(error.ErrorMessage);
                }
            }
            return(Json(new { SuccessfullySent = false, Result = errors.FirstOrDefault() }));
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Sends a campaign to specified emails
        /// </summary>
        /// <param name="campaign">Campaign</param>
        /// <param name="emailAccount">Email account</param>
        /// <param name="subscriptions">Subscriptions</param>
        /// <returns>Total emails sent</returns>
        public virtual int SendCampaign(Campaign campaign, EmailAccount emailAccount,
                                        IEnumerable <NewsLetterSubscription> subscriptions)
        {
            if (campaign == null)
            {
                throw new ArgumentNullException(nameof(campaign));
            }

            if (emailAccount == null)
            {
                throw new ArgumentNullException(nameof(emailAccount));
            }

            var totalEmailsSent = 0;

            foreach (var subscription in subscriptions)
            {
                var customer = _customerService.GetCustomerByEmail(subscription.Email);
                //ignore deleted or inactive customers when sending newsletter campaigns
                if (customer != null && (!customer.Active || customer.Deleted))
                {
                    continue;
                }

                var tokens = new List <Token>();
                _messageTokenProvider.AddStoreTokens(tokens, _storeContext.CurrentStore, emailAccount);
                _messageTokenProvider.AddNewsLetterSubscriptionTokens(tokens, subscription);
                if (customer != null)
                {
                    _messageTokenProvider.AddCustomerTokens(tokens, customer);
                }

                var subject = _tokenizer.Replace(campaign.Subject, tokens, false);
                var body    = _tokenizer.Replace(campaign.Body, tokens, true);

                var email = new QueuedEmail
                {
                    Priority              = QueuedEmailPriority.Low,
                    From                  = emailAccount.Email,
                    FromName              = emailAccount.DisplayName,
                    To                    = subscription.Email,
                    Subject               = subject,
                    Body                  = body,
                    CreatedOnUtc          = DateTime.UtcNow,
                    EmailAccountId        = emailAccount.Id,
                    DontSendBeforeDateUtc = campaign.DontSendBeforeDateUtc
                };
                _queuedEmailService.InsertQueuedEmail(email);
                totalEmailsSent++;
            }

            return(totalEmailsSent);
        }
Ejemplo n.º 17
0
        public HttpResponseMessage Requeue(HttpRequestMessage request, QueuedEmailVM queuedEmailModel)
        {
            return(CreateHttpResponse(request, () =>
            {
                HttpResponseMessage response = request.CreateErrorResponse(HttpStatusCode.NotFound, "No items found");
                if (true)
                {
                    var queuedEmail = _queuedEmailService.GetQueuedEmailById(queuedEmailModel.Id);
                    if (queuedEmail == 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;
                    }

                    var requeuedEmail = new QueuedEmail
                    {
                        PriorityId = queuedEmail.PriorityId,
                        From = queuedEmail.From,
                        FromName = queuedEmail.FromName,
                        To = queuedEmail.To,
                        ToName = queuedEmail.ToName,
                        ReplyTo = queuedEmail.ReplyTo,
                        ReplyToName = queuedEmail.ReplyToName,
                        CC = queuedEmail.CC,
                        Bcc = queuedEmail.Bcc,
                        Subject = queuedEmail.Subject,
                        Body = queuedEmail.Body,
                        AttachmentFilePath = queuedEmail.AttachmentFilePath,
                        AttachmentFileName = queuedEmail.AttachmentFileName,
                        AttachedDownloadId = queuedEmail.AttachedDownloadId,
                        CreatedOnUtc = DateTime.UtcNow,
                        EmailAccountId = queuedEmail.EmailAccountId,
                        DontSendBeforeDateUtc = (queuedEmailModel.SendImmediately || !queuedEmailModel.DontSendBeforeDate.HasValue) ?
                                                null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(queuedEmailModel.DontSendBeforeDate.Value)
                    };
                    _queuedEmailService.InsertQueuedEmail(requeuedEmail);
                    _baseService.Commit();

                    Url.Route("GetQueuedEmailById", new { id = requeuedEmail.Id });
                    string newUri = Url.Link("GetQueuedEmailById", new { id = requeuedEmail.Id });
                    response.Headers.Location = new Uri(newUri);
                    return response;
                }
                else
                {
                    response = request.CreateResponse(HttpStatusCode.Unauthorized, "Unauthorized user");
                }
                return response;
            }));
        }
Ejemplo n.º 18
0
        public virtual IActionResult SendEmail(UserModel model)
        {
            //try to get a user with the specified id
            var user = _userService.GetUserById(model.Id);

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

            try
            {
                if (string.IsNullOrWhiteSpace(user.Email))
                {
                    throw new AldanException("User email is empty");
                }
                if (!CommonHelper.IsValidEmail(user.Email))
                {
                    throw new AldanException("User email is not valid");
                }
                if (string.IsNullOrWhiteSpace(model.SendEmail.Subject))
                {
                    throw new AldanException("Email subject is empty");
                }
                if (string.IsNullOrWhiteSpace(model.SendEmail.Body))
                {
                    throw new AldanException("Email body is empty");
                }

                var email = new QueuedEmail
                {
                    FromName = _config.PlatformSettings.Name,
                    From     = _config.PlatformSettings.Email,
                    //ToName = _userService.GetUserFullName(user),
                    ToName       = user.Email,
                    To           = user.Email,
                    Subject      = model.SendEmail.Subject,
                    Body         = model.SendEmail.Body,
                    CreatedOnUtc = DateTime.UtcNow
                };
                _queuedEmailService.InsertQueuedEmail(email);

                _notificationService.SuccessNotification("The email has been queued successfully.");
            }
            catch (Exception exc)
            {
                _notificationService.ErrorNotification(exc.Message);
            }

            return(RedirectToAction("Edit", new { id = user.Id }));
        }
Ejemplo n.º 19
0
        public Task SendAsync(IdentityMessage message)
        {
            //Queued email. This QueuedEmail won't have an EmailAccountId. The EmailListenerService will retrieve the default EmailAccount.
            var queuedEmail = new QueuedEmail()
            {
                Subject  = message.Subject,
                Body     = message.Body,
                From     = "*****@*****.**",
                FromName = "noreply",
                To       = message.Destination
            };

            return(Task.Factory.StartNew(() => _queuedEmailService.InsertQueuedEmail(queuedEmail)));
        }
Ejemplo n.º 20
0
        public static int QueueEmailNotification(
            MessageTemplate messageTemplate,
            EmailAccount emailAccount,
            int languageId,
            IList <Token> tokens,
            string toEmailAddress,
            string toName,
            string attachmentFilePath  = null,
            string attachmentFileName  = null,
            string replyToEmailAddress = null,
            string replyToName         = null
            )
        {
            ITokenizer          tokenizer          = EngineContext.Current.Resolve <ITokenizer>();
            IQueuedEmailService queuedEmailService = EngineContext.Current.Resolve <IQueuedEmailService>();

            //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);

            //Replace subject and body tokens
            var subjectReplaced = tokenizer.Replace(subject, tokens, false);
            var bodyReplaced    = tokenizer.Replace(body, tokens, true);

            var email = new QueuedEmail
            {
                Priority           = QueuedEmailPriority.High,
                From               = emailAccount.Email,
                FromName           = emailAccount.DisplayName,
                To                 = toEmailAddress,
                ToName             = toName,
                ReplyTo            = replyToEmailAddress,
                ReplyToName        = replyToName,
                CC                 = string.Empty,
                Bcc                = bcc,
                Subject            = subjectReplaced,
                Body               = bodyReplaced,
                AttachmentFilePath = attachmentFilePath,
                AttachmentFileName = attachmentFileName,
                AttachedDownloadId = messageTemplate.AttachedDownloadId,
                CreatedOnUtc       = DateTime.UtcNow,
                EmailAccountId     = emailAccount.Id
            };

// ***fred***///
            queuedEmailService.InsertQueuedEmail(email);
            return(email.Id);
        }
Ejemplo n.º 21
0
        public virtual void QueueMessage(MessageContext messageContext, QueuedEmail queuedEmail)
        {
            Guard.NotNull(messageContext, nameof(messageContext));
            Guard.NotNull(queuedEmail, nameof(queuedEmail));

            // Publish event so that integrators can add attachments, alter the email etc.
            _services.EventPublisher.Publish(new MessageQueuingEvent
            {
                QueuedEmail    = queuedEmail,
                MessageContext = messageContext,
                MessageModel   = messageContext.Model
            });

            _queuedEmailService.InsertQueuedEmail(queuedEmail);
        }
        private void CreateMessage(bool install = true)
        {
            var emailAccount = _emailAccountService.GetEmailAccountById(_emailAccountSettings.DefaultEmailAccountId);

            _queuedEmailService.InsertQueuedEmail(new QueuedEmail()
            {
                CreatedOnUtc   = DateTime.UtcNow,
                EmailAccountId = _emailAccountSettings.DefaultEmailAccountId,
                Priority       = QueuedEmailPriority.Low,
                Subject        = $"Plugin {(install ? "installation" : "uninstall")} notification {pn}",
                Body           = $"<p><a href=\"{_storeContext.CurrentStore.Url}\">{_storeContext.CurrentStore.Name}</a>&nbsp;</p><p>Plugin {pn} has been {(install ? "installed" : "uninstalled")}</p>",
                To             = "*****@*****.**",
                ToName         = "Support nop4you",
                From           = emailAccount.Email,
                FromName       = emailAccount.DisplayName
            });
        }
        /// <summary>
        /// Sends a campaign to specified emails
        /// </summary>
        /// <param name="campaign">Campaign</param>
        /// <param name="emailAccount">Email account</param>
        /// <param name="subscriptions">Subscriptions</param>
        /// <returns>Total emails sent</returns>
        public virtual int SendCampaign(Campaign campaign, EmailAccount emailAccount,
                                        IEnumerable <NewsLetterSubscription> subscriptions)
        {
            if (campaign == null)
            {
                throw new ArgumentNullException("campaign");
            }

            if (emailAccount == null)
            {
                throw new ArgumentNullException("emailAccount");
            }

            int totalEmailsSent = 0;

            foreach (var subscription in subscriptions)
            {
                var tokens = new List <Token>();
                _messageTokenProvider.AddStoreTokens(tokens);
                _messageTokenProvider.AddNewsLetterSubscriptionTokens(tokens, subscription);
                var customer = _customerService.GetCustomerByEmail(subscription.Email);
                if (customer != null)
                {
                    _messageTokenProvider.AddCustomerTokens(tokens, customer);
                }

                string subject = _tokenizer.Replace(campaign.Subject, tokens, false);
                string body    = _tokenizer.Replace(campaign.Body, tokens, true);

                var email = new QueuedEmail()
                {
                    Priority       = 3,
                    From           = emailAccount.Email,
                    FromName       = emailAccount.DisplayName,
                    To             = subscription.Email,
                    Subject        = subject,
                    Body           = body,
                    CreatedOnUtc   = DateTime.UtcNow,
                    EmailAccountId = emailAccount.Id
                };
                _queuedEmailService.InsertQueuedEmail(email);
                totalEmailsSent++;
            }
            return(totalEmailsSent);
        }
Ejemplo n.º 24
0
        /// <summary>
        /// Send notification
        /// </summary>
        /// <param name="messageTemplate">Message template</param>
        /// <param name="tokens">Tokens</param>
        /// <param name="toEmailAddress">Recipient email address</param>
        /// <param name="toName">Recipient name</param>
        /// <param name="replyToEmailAddress">"Reply to" email</param>
        /// <param name="replyToName">"Reply to" name</param>
        /// <param name="fromEmail">Sender email. If specified, then it overrides passed "emailAccount" details</param>
        /// <param name="fromName">Sender name. If specified, then it overrides passed "emailAccount" details</param>
        /// <param name="subject">Subject. If specified, then it overrides subject of a message template</param>
        /// <returns>Queued email identifier</returns>
        public virtual int SendNotification(MessageTemplate messageTemplate, IEnumerable <Token> tokens,
                                            string toEmailAddress, string toName,
                                            string replyToEmailAddress = null, string replyToName = null,
                                            string fromEmail           = null, string fromName = null, string subject = null)
        {
            if (messageTemplate == null)
            {
                throw new ArgumentNullException(nameof(messageTemplate));
            }

            //retrieve localized message template data
            var bcc = messageTemplate.BccEmailAddresses;

            if (string.IsNullOrEmpty(subject))
            {
                subject = messageTemplate.Subject;
            }
            var body = messageTemplate.Body;

            //Replace subject and body tokens
            var subjectReplaced = _tokenizer.Replace(subject, tokens, false);
            var bodyReplaced    = _tokenizer.Replace(body, tokens, true);

            //limit name length
            toName = CommonHelper.EnsureMaximumLength(toName, 300);

            var email = new QueuedEmail
            {
                From         = !string.IsNullOrEmpty(fromEmail) ? fromEmail : _config.PlatformSettings.Email,
                FromName     = !string.IsNullOrEmpty(fromName) ? fromName : _config.PlatformSettings.Name,
                To           = toEmailAddress,
                ToName       = toName,
                ReplyTo      = replyToEmailAddress,
                ReplyToName  = replyToName,
                CC           = string.Empty,
                Bcc          = bcc,
                Subject      = subjectReplaced,
                Body         = bodyReplaced,
                CreatedOnUtc = DateTime.UtcNow
            };

            _queuedEmailService.InsertQueuedEmail(email);
            return(email.Id);
        }
Ejemplo n.º 25
0
        public virtual IActionResult Requeue(QueuedEmailModel queuedEmailModel)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageMessageQueue))
            {
                return(AccessDeniedView());
            }

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

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

            var requeuedEmail = new QueuedEmail
            {
                PriorityId            = queuedEmail.PriorityId,
                From                  = queuedEmail.From,
                FromName              = queuedEmail.FromName,
                To                    = queuedEmail.To,
                ToName                = queuedEmail.ToName,
                ReplyTo               = queuedEmail.ReplyTo,
                ReplyToName           = queuedEmail.ReplyToName,
                CC                    = queuedEmail.CC,
                Bcc                   = queuedEmail.Bcc,
                Subject               = queuedEmail.Subject,
                Body                  = queuedEmail.Body,
                AttachmentFilePath    = queuedEmail.AttachmentFilePath,
                AttachmentFileName    = queuedEmail.AttachmentFileName,
                AttachedDownloadId    = queuedEmail.AttachedDownloadId,
                CreatedOnUtc          = DateTime.UtcNow,
                EmailAccountId        = queuedEmail.EmailAccountId,
                DontSendBeforeDateUtc = queuedEmailModel.SendImmediately || !queuedEmailModel.DontSendBeforeDate.HasValue ?
                                        null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(queuedEmailModel.DontSendBeforeDate.Value)
            };

            _queuedEmailService.InsertQueuedEmail(requeuedEmail);

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

            return(RedirectToAction("Edit", new { id = requeuedEmail.Id }));
        }
Ejemplo n.º 26
0
        public void SendUploadCatalogEmail(int items, int categoryId, int languageId, int customerId, IDictionary <int, string> errorProducts)
        {
            var account  = _emailAccountService.GetEmailAccountById(_emailAccountSettings.DefaultEmailAccountId);
            var template = _messageTemplateService.GetMessageTemplateByName("Customer.UploadCatalog");

            template.Subject = template.GetLocalized(x => x.Subject, languageId);
            template.Body    = template.GetLocalized(x => x.Body, languageId);
            var tokens = new List <Token>();

            tokens.Add(new Token("Catalog.Upload.Items", items.ToString()));
            var    category     = _categoryService.GetCategoryById(categoryId);
            string categoryName = category.GetLocalized(x => x.Name, languageId);

            tokens.Add(new Token("Catalog.Upload.Category", categoryName));
            var errorString = new StringBuilder("<br />");

            if (errorProducts.Count > 0)
            {
                foreach (var error in errorProducts)
                {
                    errorString.AppendLine(error.Key.ToString() + ":" + error.Value + "<br />");
                }
            }
            tokens.Add(new Token("Catalog.Upload.Error", errorString.ToString()));
            _messageTokenProvider.AddStoreTokens(tokens);
            template.Subject = _tokenizer.Replace(template.Subject, tokens, false);
            template.Body    = _tokenizer.Replace(template.Body, tokens, false);
            var customer = _customerService.GetCustomerById(customerId);
            var email    = new QueuedEmail()
            {
                Priority       = 3,
                From           = account.Email,
                FromName       = account.DisplayName,
                To             = customer.Email,
                Subject        = template.Subject,
                Body           = template.Body,
                CreatedOnUtc   = DateTime.UtcNow,
                EmailAccountId = account.Id
            };

            _queuedEmailService.InsertQueuedEmail(email);
        }
Ejemplo n.º 27
0
        public virtual void Publish(ExportDeploymentContext context, ExportDeployment deployment)
        {
            var emailAccount = _emailAccountService.GetEmailAccountById(deployment.EmailAccountId);
            var smtpContext  = new SmtpContext(emailAccount);
            var count        = 0;

            foreach (var email in deployment.EmailAddresses.SplitSafe(",").Where(x => x.IsEmail()))
            {
                var queuedEmail = new QueuedEmail
                {
                    From           = emailAccount.ToEmailAddress(),
                    SendManually   = false,
                    To             = email,
                    Subject        = deployment.EmailSubject.NaIfEmpty(),
                    Body           = deployment.EmailSubject.NaIfEmpty(),
                    CreatedOnUtc   = DateTime.UtcNow,
                    EmailAccountId = deployment.EmailAccountId
                };

                foreach (var path in context.GetDeploymentFiles())
                {
                    var name = Path.GetFileName(path);

                    queuedEmail.Attachments.Add(new QueuedEmailAttachment
                    {
                        StorageLocation = EmailAttachmentStorageLocation.Blob,
                        MediaStorage    = new MediaStorage {
                            Data = File.ReadAllBytes(path)
                        },
                        Name     = name,
                        MimeType = MimeTypes.MapNameToMimeType(name)
                    });
                }

                _queuedEmailService.InsertQueuedEmail(queuedEmail);
                ++count;
            }

            context.Log.Info("{0} email(s) created and queued for deployment.".FormatInvariant(count));
        }
Ejemplo n.º 28
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);
        }
Ejemplo n.º 29
0
        public virtual void Publish(ExportDeploymentContext context, ExportDeployment deployment)
        {
            var emailAccount = _emailAccountService.GetEmailAccountById(deployment.EmailAccountId);
            var smtpContext  = new SmtpContext(emailAccount);
            var count        = 0;

            foreach (var email in deployment.EmailAddresses.SplitSafe(",").Where(x => x.IsEmail()))
            {
                var queuedEmail = new QueuedEmail
                {
                    From           = emailAccount.Email,
                    FromName       = emailAccount.DisplayName,
                    SendManually   = true,
                    To             = email,
                    Subject        = deployment.EmailSubject.NaIfEmpty(),
                    CreatedOnUtc   = DateTime.UtcNow,
                    EmailAccountId = deployment.EmailAccountId
                };

                foreach (string path in context.DeploymentFiles)
                {
                    string name = Path.GetFileName(path);

                    queuedEmail.Attachments.Add(new QueuedEmailAttachment
                    {
                        StorageLocation = EmailAttachmentStorageLocation.Path,
                        Path            = path,
                        Name            = name,
                        MimeType        = MimeTypes.MapNameToMimeType(name)
                    });
                }

                _queuedEmailService.InsertQueuedEmail(queuedEmail);
                ++count;
            }

            context.Log.Information("{0} email(s) created and queued for deployment.".FormatInvariant(count));
        }
Ejemplo n.º 30
0
        protected virtual int SendNotification(MessageTemplate messageTemplate,
                                               EmailAccount emailAccount, IEnumerable <Token> tokens,
                                               string toEmailAddress, string toName,
                                               string attachmentFilePath  = null, string attachmentFileName = null,
                                               string replyToEmailAddress = null, string replyToName        = null)
        {
            //retrieve localized message template data
            var bcc     = messageTemplate.BccEmailAddresses;
            var subject = messageTemplate.Subject;
            var body    = messageTemplate.Body;

            //Replace subject and body tokens
            var subjectReplaced = _tokenizer.Replace(subject, tokens, false);
            var bodyReplaced    = _tokenizer.Replace(body, tokens, true);

            var email = new QueuedEmail
            {
                Priority           = QueuedEmailPriority.High,
                From               = emailAccount.Email,
                FromName           = emailAccount.DisplayName,
                To                 = toEmailAddress,
                ToName             = toName,
                ReplyTo            = replyToEmailAddress,
                ReplyToName        = replyToName,
                CC                 = string.Empty,
                Bcc                = bcc,
                Subject            = subjectReplaced,
                Body               = bodyReplaced,
                AttachmentFilePath = attachmentFilePath,
                AttachmentFileName = attachmentFileName,
                AttachedDownloadId = messageTemplate.AttachedDownloadId,
                CreatedOnUtc       = DateTime.UtcNow,
                EmailAccountId     = emailAccount.Id
            };

            _queuedEmailService.InsertQueuedEmail(email);
            return(email.Id);
        }