Example #1
0
        /// <summary>
        /// Sends 'New user' notification message to a store owner
        /// </summary>
        /// <param name="user">User instance</param>
        /// <param name="languageId">Message language identifier</param>
        /// <returns>Queued email identifier</returns>
        public virtual IList <int> SendUserRegisteredNotificationMessage(User user, int languageId)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            var messageTemplates = GetActiveMessageTemplates(MessageTemplateSystemNames.UserRegisteredNotification);

            if (!messageTemplates.Any())
            {
                return(new List <int>());
            }

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

            _messageTokenProvider.AddUserTokens(commonTokens, user);

            return(messageTemplates.Select(messageTemplate =>
            {
                //email account
                var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId);

                var tokens = new List <Token>(commonTokens);

                //event notification
                _eventPublisher.MessageTokensAdded(messageTemplate, tokens);

                var toEmail = emailAccount.Email;
                var toName = emailAccount.DisplayName;

                return SendNotification(messageTemplate, emailAccount, languageId, tokens, toEmail, toName);
            }).ToList());
        }
        /// <summary>
        /// Sends 'New user' notification message to a platform owner
        /// </summary>
        /// <param name="user">User instance</param>
        /// <returns>Queued email identifier</returns>
        public virtual IList <int> SendUserRegisteredNotificationMessage(User user)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            var messageTemplates = GetActiveMessageTemplates(MessageTemplateSystemNames.UserRegisteredNotification);

            if (!messageTemplates.Any())
            {
                return(new List <int>());
            }

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

            _messageTokenProvider.AddUserTokens(commonTokens, user);

            return(messageTemplates.Select(messageTemplate =>
            {
                var tokens = new List <Token>(commonTokens);
                _messageTokenProvider.AddPlatformTokens(tokens);

                var toEmail = _config.PlatformSettings.Email;
                var toName = _config.PlatformSettings.Name;

                return SendNotification(messageTemplate, tokens, toEmail, toName);
            }).ToList());
        }
Example #3
0
        /// <summary>
        /// Sends 'New user' notification message to a application owner
        /// </summary>
        /// <param name="user">User instance</param>
        /// <param name="languageId">Message language identifier</param>
        /// <returns>Queued email identifier</returns>
        public virtual int SendUserRegisteredNotificationMessage(User user, int languageId)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            var application = _sysContext.CurrentApplication;

            languageId = EnsureLanguageIsActive(languageId, application.Id);

            var messageTemplate = GetActiveMessageTemplate(MessageTemplateSystemNames.UserRegisteredNotification, application.Id);

            if (messageTemplate == null)
            {
                return(0);
            }

            //email account
            var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId);

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

            _messageTokenProvider.AddApplicationTokens(tokens, application, emailAccount);
            _messageTokenProvider.AddUserTokens(tokens, user);

            //event notification
            _eventPublisher.MessageTokensAdded(messageTemplate, tokens);

            var toEmail = emailAccount.Email;
            var toName  = emailAccount.DisplayName;

            return(SendNotification(messageTemplate, emailAccount, languageId, tokens, toEmail, toName));
        }
        /// <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 user = _userService.GetUserByEmail(subscription.Email);
                //ignore deleted or inactive users when sending newsletter campaigns
                if (user != null && (!user.Active || user.Deleted))
                {
                    continue;
                }

                var tokens = new List <Token>();
                _messageTokenProvider.AddNewsLetterSubscriptionTokens(tokens, subscription);
                if (user != null)
                {
                    _messageTokenProvider.AddUserTokens(tokens, user);
                }

                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);
        }
Example #5
0
        /// <summary>
        /// Sends 'New user' notification message to a store owner
        /// </summary>
        /// <param name="user">User instance</param>
        /// <param name="languageId">Message language identifier</param>
        /// <returns>Queued email identifier</returns>
        public virtual int SendUserRegisteredNotificationMessage(User user, int languageId)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            languageId = EnsureLanguageIsActive(languageId);

            var messageTemplate = GetLocalizedActiveMessageTemplate("NewUser.Notification", languageId);

            if (messageTemplate == null)
            {
                return(0);
            }

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

            _messageTokenProvider.AddSiteTokens(tokens);
            _messageTokenProvider.AddUserTokens(tokens, user);

            //event notification
            _eventPublisher.MessageTokensAdded(messageTemplate, tokens);

            var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId);
            var toEmail      = emailAccount.Email;
            var toName       = emailAccount.DisplayName;

            // use user email as reply address
            var replyTo = GetReplyToEmail(user);

            return(SendNotification(messageTemplate, emailAccount,
                                    languageId, tokens,
                                    toEmail, toName,
                                    replyTo.Item1, replyTo.Item2));
        }
Example #6
0
        private async Task <int> SendActivationEmail(User user)
        {
            var messageTemplate = await _messageManager.GetActiveMessageTemplate("Customer.EmailValidationMessage");

            if (messageTemplate == null)
            {
                return(0);
            }

            var tokens = new List <Token>();

            _messageTokenProvider.AddUserTokens(tokens, user);
            string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

            _emailSender.Send("*****@*****.**", _tokenizer.Replace(messageTemplate.Subject, tokens, false), _tokenizer.Replace(messageTemplate.Body, tokens, true));
            //entity.EmailConfirmationCode = await _userManager.GenerateEmailConfirmationTokenAsync(entity.Id);
            //await _userManager.SendEmailAsync(entity.Id, "sss", "bbb");

            return(1);
        }
Example #7
0
        public int SendFriendRequestNotification(User customer, int friendRequestCount, int languageId, int storeId)
        {
            var store = _storeService.GetStoreById(storeId);

            languageId = EnsureLanguageIsActive(languageId, store.Id);


            var messageTemplate = GetLocalizedActiveMessageTemplate("MobSocial.FriendRequestNotification", store.Id);

            if (messageTemplate == null)
            {
                return(0);
            }


            var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId);

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

            _messageTokenProvider.AddStoreTokens(tokens, store, emailAccount);
            _messageTokenProvider.AddUserTokens(tokens, customer);
            tokens.Add(new Token("FriendRequestCount", friendRequestCount.ToString()));


            //event notification
            _eventPublisher.MessageTokensAdded(messageTemplate, tokens);


            var toEmail = customer.Email;
            var toName  = customer.GetFullName().ToTitleCase();


            return(SendNotification(messageTemplate, emailAccount, languageId, tokens, toEmail, toName));
        }