private void SendEmailToCustomerForSOInfo(SOInfo soInfo, string emailTemplateID) { try { ECCentral.BizEntity.Customer.CustomerBasicInfo customerInfo = GetCustomerBaseInfo(soInfo.BaseInfo.CustomerSysNo.Value); string customerEmail = customerInfo.Email == null ? null : customerInfo.Email.Trim(); if (customerEmail == null) { return; } KeyValueVariables keyValueVariables = new KeyValueVariables(); KeyTableVariables keyTableVariables = new KeyTableVariables(); #region 填充基本属性 keyValueVariables.Add("SOSysNo", soInfo.BaseInfo.SysNo.Value.ToString()); keyValueVariables.Add("SOID", soInfo.BaseInfo.SOID); keyValueVariables.Add("CustomerName", customerInfo.CustomerName); keyValueVariables.Add("CustomerID", customerInfo.CustomerID); keyValueVariables.Add("OrderTime", soInfo.BaseInfo.CreateTime.Value.ToString(SOConst.DateTimeFormat)); keyValueVariables.Add("InvoiceHeader", soInfo.InvoiceInfo.Header); keyValueVariables.Add("ReceiveName", soInfo.ReceiverInfo.Name); ECCentral.BizEntity.Common.AreaInfo areaInfo = ExternalDomainBroker.GetAreaInfoByDistrictSysNo(soInfo.ReceiverInfo.AreaSysNo.Value); keyValueVariables.Add("ProvinceName", areaInfo.ProvinceName); keyValueVariables.Add("CityName", areaInfo.CityName); keyValueVariables.Add("DistrictName", areaInfo.DistrictName); keyValueVariables.Add("ReceiveAddress", soInfo.ReceiverInfo.Address); keyValueVariables.Add("ReceiveZip", soInfo.ReceiverInfo.Zip); keyValueVariables.Add("ReceivePhone", String.IsNullOrEmpty(soInfo.ReceiverInfo.Phone) ? soInfo.ReceiverInfo.MobilePhone : soInfo.ReceiverInfo.Phone); ECCentral.BizEntity.Common.PayType payType = ExternalDomainBroker.GetPayTypeBySysNo(soInfo.BaseInfo.PayTypeSysNo.Value); keyValueVariables.Add("PayType", payType.PayTypeName); ECCentral.BizEntity.Common.ShippingType shippingType = ExternalDomainBroker.GetShippingTypeBySysNo(soInfo.ShippingInfo.ShipTypeSysNo.Value); keyValueVariables.Add("ShipType", shippingType.ShippingTypeName); keyValueVariables.Add("ShipPeriod", shippingType.Period); keyValueVariables.Add("CashPay", soInfo.BaseInfo.CashPay.ToString(SOConst.DecimalFormat)); keyValueVariables.Add("ShipPrice", soInfo.BaseInfo.ShipPrice.Value.ToString(SOConst.DecimalFormat)); keyValueVariables.Add("PremiumAmount", soInfo.BaseInfo.PremiumAmount.Value.ToString(SOConst.DecimalFormat)); keyValueVariables.Add("ReceivableAmount", soInfo.BaseInfo.ReceivableAmount.ToString(SOConst.DecimalFormat)); keyValueVariables.Add("GainPoint", soInfo.BaseInfo.GainPoint.Value); keyValueVariables.Add("Weight", soInfo.ShippingInfo.Weight); string changeAmount = (soInfo.BaseInfo.OriginalReceivableAmount - soInfo.BaseInfo.ReceivableAmount).ToString(SOConst.DecimalFormat); keyValueVariables.Add("ChangeAmount", changeAmount); keyValueVariables.Add("ChangeAmountDisplay", changeAmount != (0M).ToString(SOConst.DecimalFormat)); keyValueVariables.Add("GiftCardPay", soInfo.BaseInfo.GiftCardPay.Value.ToString(SOConst.DecimalFormat)); keyValueVariables.Add("GiftCardDisplay", soInfo.BaseInfo.GiftCardPay != 0); keyValueVariables.Add("PointPay", soInfo.BaseInfo.PointPayAmount); keyValueVariables.Add("PointPayDisplay", soInfo.BaseInfo.PointPay != 0); keyValueVariables.Add("PrePay", soInfo.BaseInfo.PrepayAmount.Value.ToString(SOConst.DecimalFormat)); keyValueVariables.Add("PrePayDisplay", soInfo.BaseInfo.PrepayAmount != 0); keyValueVariables.Add("PayPrice", soInfo.BaseInfo.PayPrice.Value.ToString(SOConst.DecimalFormat)); keyValueVariables.Add("PayPriceDisplay", soInfo.BaseInfo.PayPrice != 0); keyValueVariables.Add("PromotionAmount", Math.Abs(soInfo.BaseInfo.PromotionAmount.Value).ToString(SOConst.DecimalFormat)); keyValueVariables.Add("PromotionDisplay", soInfo.BaseInfo.PromotionAmount != 0); keyValueVariables.Add("NowYear", DateTime.Now.Year); keyValueVariables.Add("TariffAmt", soInfo.BaseInfo.TariffAmount.HasValue?soInfo.BaseInfo.TariffAmount.Value.ToString(SOConst.DecimalFormat) : 0M.ToString(SOConst.DecimalFormat)); #endregion //int weight = 0; #region 替换邮件模板内连接追踪代码 ReplaceCM_MMC(emailTemplateID, keyValueVariables); #endregion #region 填充商品 string imgSrc = string.Empty; string pagePath = string.Empty; soInfo.Items.ForEach(item => { //weight += item.Weight.Value * item.Quantity.Value; string tbKey = String.Format("Items_{0}", item.ProductType.ToString()); pagePath = "http://www.kjt.com/product/detail/" + item.ProductSysNo; imgSrc = "http://image.kjt.com/neg/P60/" + item.ProductID + ".jpg"; DataTable tableList = null; if (!keyTableVariables.ContainsKey(tbKey)) { tableList = new DataTable(); tableList.Columns.AddRange(new DataColumn[] { new DataColumn("ProductID"), new DataColumn("ProductName"), new DataColumn("Price"), new DataColumn("Quantity"), new DataColumn("Amount"), new DataColumn("PagePath"), new DataColumn("ImgSrc") }); keyTableVariables.Add(tbKey, tableList); } else { tableList = keyTableVariables[tbKey]; } //连接增加追踪代码 ReplaceProductCM_MMC(emailTemplateID, ref pagePath, item.ProductID); tableList.Rows.Add(new string[] { item.ProductType == SOProductType.Coupon ? null : item.ProductID, item.ProductName, item.OriginalPrice.Value.ToString(SOConst.DecimalFormat), item.Quantity.Value.ToString(), (item.Quantity.Value * item.OriginalPrice.Value).ToString(SOConst.DecimalFormat), pagePath, imgSrc }); }); #endregion #region 组合销售 List <SOPromotionInfo> comboPromotionList = soInfo.SOPromotions.FindAll(p => { return(p.PromotionType == SOPromotionType.Combo); }); keyValueVariables.Add("PromotionInfoDisplay", soInfo.BaseInfo.PromotionAmount != 0); if (comboPromotionList != null) { DataTable comboTable = new DataTable(); comboTable.Columns.AddRange(new DataColumn[] { new DataColumn("ComboName"), new DataColumn("ComboDiscount"), new DataColumn("ComboTime"), new DataColumn("ComboTotalDiscount") }); keyTableVariables.Add("ComboList", comboTable); List <ECCentral.BizEntity.MKT.ComboInfo> comboInfoList = ExternalDomainBroker.GetComboList(comboPromotionList.Select <SOPromotionInfo, int>(p => p.PromotionSysNo.Value).ToList <int>()); if (comboInfoList != null) { comboPromotionList.ForEach(promotion => { ECCentral.BizEntity.MKT.ComboInfo comboInfo = comboInfoList.FirstOrDefault(cb => cb.SysNo == promotion.PromotionSysNo); comboTable.Rows.Add(new string[] { comboInfo == null ? null : comboInfo.Name.Content, (promotion.DiscountAmount.Value / promotion.Time.Value).ToString(SOConst.DecimalFormat), promotion.Time.Value.ToString(), promotion.DiscountAmount.Value.ToString(SOConst.DecimalFormat) }); }); } } #endregion #region 填充推荐商品信息 string result = string.Empty; //测试订单号:388280 List <CommendatoryProductsInfo> list = ObjectFactory <ISODA> .Instance.GetCommendatoryProducts(int.Parse(soInfo.BaseInfo.SOID)); if (list != null && list.Count > 0) { result = "<br /><table width=\"650px\" style=\"border-collapse: collapse; border: 1px solid #ddd;\" cellspacing=\"0\" cellpadding=\"0\">\n" + "<tr style=\"background:#fff;\">\n" + "<td style=\"width:30px; padding:10px 0 0 10px;\"><img src=\"http://c1.neweggimages.com.cn/NeweggPic2/Marketing/201108/chuhuo/images/icon_4.jpg\" /></td>\n" + "<td style=\"text-align:left; padding:10px 0 0 5px;\"><span style=\"font-family:\"微软雅黑\";font-size:16px; display:inline-block; padding:0; padding-left:5px;\"><strong>我们猜您可能还对下面的商品感兴趣</strong></span></td>\n" + "</tr>\n" + "</table>\n" + "<div style=\"padding-top:10px;border-collapse: collapse; border: 1px solid #ddd;width:648px\">" + "<table cellspacing=\"0\" cellpadding=\"0\" style=\"padding-bottom:10px;border-collapse: collapse; border:0;\">\n" + "<tr style=\" background:#fff;\">\n" + "[RevommendProductList1]\n" + "</tr>\n" + "<tr style=\"background:#fff;\">\n" + "[RevommendProductList2]\n" + "</tr>\n" + "</table>\n" + "</div>"; string item1 = string.Empty, item2 = string.Empty; IEnumerator <CommendatoryProductsInfo> rator = list.Take(3).GetEnumerator(); while (rator.MoveNext()) { CommendatoryProductsInfo entity = rator.Current; item1 += ReplaceCommendatoryProduct(entity, emailTemplateID); } rator = list.Skip(3).Take(3).GetEnumerator(); while (rator.MoveNext()) { CommendatoryProductsInfo entity = rator.Current; item2 += ReplaceCommendatoryProduct(entity, emailTemplateID); } result = result.Replace("[RevommendProductList1]", item1) .Replace("[RevommendProductList2]", item2); keyValueVariables.Add("CommendatoryProducts", result); } #endregion #region 填充备注信息 string memo = string.Empty; if (!string.IsNullOrEmpty(soInfo.BaseInfo.MemoForCustomer)) { memo = @"<table border='0' cellpadding='5' cellspacing='0' style='width: 650px; border-collapse: collapse;font-size: 9pt;'> <tr> <td style='border: 1px solid #ddd; color: #FF4E00; font-size: 10.5pt; font-weight: bold; background: #F2F2F2;'> 备注信息 </td> </tr> <tr> <td id='Memo' style='border: 1px solid #ddd;'> " + soInfo.BaseInfo.MemoForCustomer + @" </td> </tr> </table>"; keyValueVariables.Add("Memo", memo); } #endregion ExternalDomainBroker.SendExternalEmail(customerEmail, emailTemplateID, keyValueVariables, keyTableVariables, customerInfo.FavoriteLanguageCode); } catch (Exception ex) { ExceptionHelper.HandleException(ex); } }