asp.net 实现发送邮件(根据国家读取对应国家语言的邮件内容)

最近用asp.net做一个业务管理系统的项目,里面涉及到了给客户发送邮件(邮件有日文和英文两个版本),根据国家去判断发送什么语言的邮件。

邮件内容保存在XML文件中,根据国家去读取XML文件中的邮件内容(如果国家为日本,则读取日文邮件内容;如果国家为美国,则读取英文邮件内容)。

去网上搜了相关的文章,我借此整理了一下,分享给大家!

       保存 邮件内容的XML文件(Email.xml):     

<?xml version="1.0" encoding="utf-8" ?>
<EMAIL>
  <TITLE>
    <JP>
      商品を発送いたしました
    </JP>
    <EN>
      Product are sending out

    </EN>
  </TITLE>
  <BODY>
    <JP>
      お客様

      いつもお世話になっております。KOSEYAでございます。


      ご商品はもう発送させていただきました。

      追跡番号:***************。


      追跡link:http://koseyaerp.w120.mc-test.com/followorderstatus.aspx
      TEL:072-422-5500

      税関検品のため、弊社が提供した追跡番号は変更や、登録の遅く場合がございます。

      ご理解、ご了承頂けますよう宜しくお願い致します。


      また、配達のため、お客様の電話が通じる状態になっていただきましてお願い申し上げます。

      お手数をかけまして、大変申しわけございません。


      お手元に届きましたら中身を確認後、もし何かお気づきの点ございましたら、お知らせ下さい。

      この度は取引有難う御座いました。


      ご機会があれば、またよろしくお願いします。

      KOSEYA より
    </JP>
    <EN>
      Dear Customer:

      Thank you for ordering from Koseya.com!

      Your ordered items have been shipped by us.The track number is: ***************.

      You can use the link and telephone number below to track you package.

      Link:http://koseyaerp.w120.mc-test.com/followorderstatus.aspx
      Tel:072-422-5500

      Due to the Customs reason, the Track number that we give to you may be changed or placed later by the logistics company. We thank you for your understanding and trust.

      In order to the package can be delivered successfully, please make sure that your telephone is available.

      If you are not satisfied with item you receive, please write us the Email. We are pleased to give you a solution for your troubles.

      Enjoy your shopping at Koseya.com, we hope you would come again at Koseya.com!

      Best regards

      Yours sincerely,
      Team of Koseya.com

    </EN>
  </BODY>
</EMAIL>

    发送邮件的cs代码:

        /// <summary>
        /// 发送邮件具体方法
        /// </summary>
        /// <param name="Email">客户邮箱</param>
        /// <param name="nation">客户国家</param>
        /// <param name="sysOrderNo">参数</param>
        private void sendEmailFunction(string Email, string nation, string sysOrderNo)
        {
            if(!string.IsNullOrEmpty(Email))
            {
                string xmlPath = Server.MapPath("~/Email/Email.xml");
                //需要判定国家和语言
                List<string> Emails = this.ReadXml(xmlPath, sysOrderNo, nation);
                string MailTitle = Emails[0].Replace("\r\n", "");
                string MailBody = Emails[1].Replace("sysOrderNo=***************", "sysOrderNo=" + sysOrderNo);
                this.Set_Mail_Click(Email, MailTitle, MailBody);
                ClientScript.RegisterStartupScript(Page.GetType(), "", " <Script>alert('邮件发送成功!')</Script>");
            }
            else
            {
                ClientScript.RegisterStartupScript(Page.GetType(), "", " <Script>alert('无法发送邮件,邮箱为空!')</Script>");
            }
        }

      

        /// <summary>
        /// 读取XML
        /// </summary>
        /// <param name="xmlPath">xml文件</param>
        /// <param name="sysOrderNo">参数</param>
        /// <param name="Nation">国家</param>
        /// <returns></returns>
        public static List<string> ReadXml(string xmlPath,string sysOrderNo,string Nation) {
            List<string> Mail = new List<string>();
            string JpTitle = "";  //声明邮件日文标题
            string EnTitle = ""; //声明邮件英文标题

            string JPMailbody = ""; //声明邮件日文内容
            string ENMailbody = ""; //声明邮件英文内容

            XmlDocument EMO = new XmlDocument(); //创建XML文档对象用于加载读取XML文件
            EMO.Load(xmlPath);

            //获得根标记
            XmlElement xe = EMO.DocumentElement;
            //获得<TITLE>
            XmlElement TitleElement = (XmlElement)xe.FirstChild;
            //JP标签下的2个TITLE取得
            XmlElement JpElement = (XmlElement)TitleElement.FirstChild;
            JpTitle = JpElement.InnerText;

            //EN标签下的2个TITLE取得
            XmlElement EnElement = (XmlElement)TitleElement.LastChild;
            EnTitle = EnElement.InnerText;

            //获得<BODY>
            XmlElement BodyElement = (XmlElement)xe.LastChild;
            if (sysOrderNo != null && !string.IsNullOrEmpty(sysOrderNo.Trim()))
            {
                //JP标签下的EMAIL内容取得
                JPMailbody = BodyElement.FirstChild.InnerText;
                JPMailbody.Replace("{0}", sysOrderNo);
                //EN标签下的EMAIL内容取得
                ENMailbody = BodyElement.LastChild.InnerText;
                JPMailbody.Replace("{0}", sysOrderNo);
            }
            if (Nation.Equals("日本"))
            {
                Mail.Add(JpTitle);
                Mail.Add(JPMailbody);
            }
            if (Nation.Equals("美国"))
            {
                Mail.Add(EnTitle);
                Mail.Add(ENMailbody);
            }
            return Mail;
        }

        /// <summary>
        /// 发送邮件方法,以163邮箱为例
        /// </summary>
        /// <param name="MailAddress">邮件To</param>
        /// <param name="MailTitle">邮件标题</param>
        /// <param name="MailBody">邮件内容</param>
        /// <returns>true or false</returns>
        public static Boolean Set_Mail_Click(string MailAddress, string MailTitle, string MailBody)
        {
            // 创建邮件
            MailMessage myMail = new MailMessage("18217121549@163.com", MailAddress, MailTitle, MailBody);
            myMail.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码  
            // 设置优先级
            myMail.Priority = MailPriority.High;
            // 邮件Smtp传输协议的配置及端口号
            // 不同的邮箱设置不同
            SmtpClient client = new SmtpClient("smtp.163.com", 25);
            client.Credentials = new System.Net.NetworkCredential("18217121549@163.com", "18217121549");
            try {
                client.Send(myMail);
            }
            catch (Exception ex)
            {
                return false;
            }
            return true;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值