How to Create New Mail Template


1. Issue :Ravensburger  [49417] 3.5. ORDER FAILURE – E-MAIL

2. Issue: Versalert 3.7. PRODUCT LIST/DETAIL PAGE – REQUEST TO ADD/DELETE ITEM FROM FIXED ORDER LIST


Ravensburger  [49417] 3.5. ORDER FAILURE – E-MAIL
1. create a Template Name


public virtual string GetOrderFailedMailTemplateName()
 {
    return "OrderFail";
 }



2.Get Email Address and Create Order Mail Method on ExtendedCheckoutApi.






/// <summary>
        /// [49417] 3.5. ORDER FAILURE – E-MAIL
        /// This method will send the Order Failed Mail
        /// </summary>
        /// <param name="order">order</param>
        /// <param name="basket">basket</param>
        /// <param name="errorMessage">error message</param>
        private void SendFailedOrderMail(IOrder order,IBasket basket, string errorMessage)
        {
            //Set Order Total values from Basket Values.
            SetOrderTotalPrice(order, basket);
 
            //Get Admin Setting Order Failed Email address 
            var settings = (CommerceFrameworkBase.ShopSettings.GetSettings(SettingsKeys.General));
            var ws = ObjectFactory.Create<Sana.Commerce.Shop.IWebsiteSettings>();
            ws.Initialize(settings);
            var list = ((ExtendedWebsiteSettings)ws).OrderFailedEmailAddress.Split(';');
 
            if (list != null)
            {
                List<MailAddress> addressList = new List<MailAddress>();
                foreach (var item in list)
                {
                    if (!string.IsNullOrEmpty(item))
                    {
                        addressList.Add(new MailAddress(item));
                    }
                }
                ((Sana.Commerce.Order.Order)order).OrderFailedErrorMessage = errorMessage;
 
                var templateName = GetOrderFailedMailTemplateName();
                var mail = ServiceManager.GetInstance<ExtendedOrderConfirmationHelper>().GetOrderFailureMail(templateName, order, null, addressList);
                ShopApi.Mail.Send(mail);
 
            }
        }



3.
ExtendedOrderConfirmationHelper > GetOrderFailureMail

Email creation has done from here.(set order template, Replace tags,BCC,CC, receipts )


public virtual MailMessage GetOrderFailureMail(string templateName, IOrder order, NameValueCollection additionalReplaceTags = nullIList<MailAddress> recipients = null)
        {
            var shopContext = ShopContext.GetCurrent();
            var settings = shopContext.Settings;
 
            var fromAddress = new MailAddress(settings.FromEmailAddress);
            var replaceTags = GetFailOrderReplaceTags(shopContext, order);
            if (additionalReplaceTags != null)
            {
                additionalReplaceTags.AllKeys.Each(tagName => replaceTags.Add(tagName, additionalReplaceTags[tagName]));
            }
 
            var additionalData = new Dictionary<stringobject>();
            additionalData.Add("OrderDetails", CreateOrderDetailsModel(shopContext, order));
 
            if (recipients == null)
            {
                recipients = GetEmailAddresses(shopContext, order);
            }
 
            var mail = ShopApi.Mail.Render(fromAddress, recipients, templateName, replaceTags, additionalData);
            if (settings.BccEmailAddresses != null)
            {
                settings.BccEmailAddresses.Each(bcc => mail.Bcc.Add(new MailAddress(bcc)));
            }
            return mail;
        }


4.
ExtendedOrderConfirmationHelper > GetReplaceTags()


protected virtual NameValueCollection GetFailOrderReplaceTags(ShopContext shopContext, IOrder order)
        {
            var currentUserAccount = CommerceFramework.ShopAccounts.GetShopAccount(shopContext.ShopAccount.Id, true);
            var customer = CommerceFrameworkBase.Customers.GetCustomer(shopContext.CommerceContext.AccountId);
 
            var replaceTags = base.GetReplaceTags(shopContext, order);
 
            replaceTags.Add("CUSTOMER_NAME_LABEL"CommerceFrameworkBase.SanaTexts.GetSanaText("CustomerNameLabel""Customer Name"));
            replaceTags.Add("CUSTOMER_ID_LABEL"CommerceFrameworkBase.SanaTexts.GetSanaText("CustomerIdLabel""Customer Id"));
            replaceTags.Add("SHOPACCOUNT_EMAIL_LABEL"CommerceFrameworkBase.SanaTexts.GetSanaText("ShopAccountEmailLabel""Shop Account Email"));
            replaceTags.Add("SHOPACCOUNT_NAME_LABEL"CommerceFrameworkBase.SanaTexts.GetSanaText("ShopAccountNameLabel""Shop Account"));
 
            replaceTags.Add("CUSTOMER_NAME", customer.Name);
            replaceTags.Add("CUSTOMER_ID", customer.Id);
            replaceTags.Add("SHOPACCOUNT_EMAIL", shopContext.ShopAccount.Email);
            replaceTags.Add("ORDER_ERROR_MESSAGE", ((Sana.Commerce.Order.Order)order).OrderFailedErrorMessage);
            return replaceTags;
        }


5. Add new email Template
~/Views/Default/MailTemplates/OrderFail.cshtml

6.Update Language packs Mail templates
\Ravensburger\@data\packages\LanguagePack_de-DE.9.3.5.0\MailTemplates




2. Versalert 3.7. PRODUCT LIST/DETAIL PAGE – REQUEST TO ADD/DELETE ITEM FROM FIXED ORDER LIST

ExtendedProductListController > SendRequestToAddToFixedOrderList


3.Bachofen : QuoteEmailAddress





If Need to Create Admin setting also :- search :
Add Admin Setting , Add new Email Section to Admin

add field to ExtendedStoreInfoModel ,ExtendedWebsiteSettings