private IList <Token> GenerateTokens(Customer customer, Product product) { var tokens = new List <Token>(); _messageTokenProvider.AddStoreTokens(tokens); _messageTokenProvider.AddCustomerTokens(tokens, customer); _messageTokenProvider.AddProductTokens(tokens, product); return(tokens); }
public void SendNewRequestEmail(int requestId, int languageId) { var request = _requestService.GetRequestById(requestId); var template = _messageTemplateService.GetMessageTemplateByName("ResponceNew"); 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.AddProductTokens(tokens, _productService.GetProductById(request.ProductId), languageId); _messageTokenProvider.AddStoreTokens(tokens); _messageTokenProvider.AddNewRequestTokens(tokens, request, languageId); string subject = _tokenizer.Replace(template.Subject, tokens, true); string body = _tokenizer.Replace(template.Body, tokens, true); string email = request.Product.Customer.Email; var emailAccount = _emailAccountService.GetEmailAccountById(_emailAccountSettings.DefaultEmailAccountId); var from = new MailAddress(emailAccount.Email, emailAccount.DisplayName); var to = new MailAddress(email); _emailSender.SendEmail(emailAccount, subject, body, from, to); }
/// <summary> /// Sends "email a friend" message /// </summary> /// <param name="customer">Customer instance</param> /// <param name="languageId">Message language identifier</param> /// <param name="product">Product instance</param> /// <param name="customerEmail">Customer's email</param> /// <param name="friendsEmail">Friend's email</param> /// <param name="personalMessage">Personal message</param> /// <returns>Queued email identifier</returns> public virtual int SendProductEmailAFriendMessage(Customer customer, int languageId, Product product, string customerEmail, string friendsEmail, string personalMessage) { if (customer == null) { throw new ArgumentNullException("customer"); } if (product == null) { throw new ArgumentNullException("product"); } var store = _storeContext.CurrentStore; languageId = EnsureLanguageIsActive(languageId, store.Id); var messageTemplate = GetActiveMessageTemplate(MessageTemplateSystemNames.EmailAFriendMessage, store.Id); if (messageTemplate == null) { return(0); } //email account var emailAccount = GetEmailAccountOfMessageTemplate(messageTemplate, languageId); //tokens var tokens = new List <Token>(); _messageTokenProvider.AddStoreTokens(tokens, store, emailAccount); _messageTokenProvider.AddCustomerTokens(tokens, customer); _messageTokenProvider.AddProductTokens(tokens, product, languageId); tokens.Add(new Token("EmailAFriend.PersonalMessage", personalMessage, true)); tokens.Add(new Token("EmailAFriend.Email", customerEmail)); //event notification _eventPublisher.MessageTokensAdded(messageTemplate, tokens); return(SendNotification(messageTemplate, emailAccount, languageId, tokens, friendsEmail, string.Empty)); }