/// <summary> /// Sends "contact us" message /// </summary> /// <param name="languageId">Message language identifier</param> /// <param name="senderEmail">Sender email</param> /// <param name="senderName">Sender name</param> /// <param name="subject">Email subject. Pass null if you want a message template subject to be used.</param> /// <param name="body">Email body</param> /// <returns>Queued email identifier</returns> public virtual IList <int> SendContactUsMessage(int languageId, string senderEmail, string senderName, string subject, string body) { //var store = _storeContext.CurrentStore; //languageId = EnsureLanguageIsActive(languageId, store.Id); //var messageTemplates = GetActiveMessageTemplates(MessageTemplateSystemNames.ContactUsMessage, store.Id); var messageTemplates = GetActiveMessageTemplates(MessageTemplateSystemNames.ContactUsMessage, 0); if (!messageTemplates.Any()) { return(new List <int>()); } //tokens var commonTokens = new List <Token> { new Token("ContactUs.SenderEmail", senderEmail), new Token("ContactUs.SenderName", senderName), new Token("ContactUs.Body", body, true) }; return(messageTemplates.Select(messageTemplate => { //email account var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId); var tokens = new List <Token>(commonTokens); //chai // _messageTokenProvider.AddStoreTokens(tokens, store, emailAccount); _messageTokenProvider.AddSiteTokens(tokens, emailAccount); string fromEmail; string fromName; //required for some SMTP servers if (_commonSettings.UseSystemEmailForContactUsForm) { fromEmail = emailAccount.Email; fromName = emailAccount.DisplayName; body = $"<strong>From</strong>: {WebUtility.HtmlEncode(senderName)} - {WebUtility.HtmlEncode(senderEmail)}<br /><br />{body}"; } else { fromEmail = senderEmail; fromName = senderName; } //event notification _eventPublisher.MessageTokensAdded(messageTemplate, tokens); var toEmail = emailAccount.Email; var toName = emailAccount.DisplayName; return SendNotification(messageTemplate, emailAccount, languageId, tokens, toEmail, toName, fromEmail: fromEmail, fromName: fromName, subject: subject, replyToEmailAddress: senderEmail, replyToName: senderName); }).ToList()); }
/// <summary> /// Sends 'New user' notification message to a site owner /// </summary> /// <param name="user">User instance</param> /// <param name="languageId">Message language identifier</param> /// <returns>Queued email identifier</returns> public virtual IList <Guid> SendUserRegisteredNotificationMessage(User user) { if (user == null) { throw new ArgumentNullException(nameof(user)); } var site = _siteContext.CurrentSite; var messageTemplates = GetActiveMessageTemplates(MessageTemplateSystemNames.UserRegisteredNotification, site.Id); if (!messageTemplates.Any()) { return(new List <Guid>()); } //tokens var commonTokens = new List <Token>(); _messageTokenProvider.AddUserTokens(commonTokens, user); return(messageTemplates.Select(messageTemplate => { //email account var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate); var tokens = new List <Token>(commonTokens); _messageTokenProvider.AddSiteTokens(tokens, site, emailAccount); //event notification _eventPublisher.MessageTokensAdded(messageTemplate, tokens); var toEmail = emailAccount.Email; var toName = emailAccount.DisplayName; return SendNotification(messageTemplate, emailAccount, tokens, toEmail, toName); }).ToList()); }
/// <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)); }