• C#中发送邮件时模板处理


    在c#的项目中,常常需要添加邮件发送的功能,邮件发送时的模板往往不是一成不变的,是需要根据case的不同来确定不同内容的邮件,发送给不同的对象,这里分享一种邮件模板处理的方式,仅供参考(邮件发送的函数参考http://www.cnblogs.com/dannyli/archive/2011/08/23/2150229.html

    1.邮件模板(红色部分是需要根据case来确定的)

    2.模板处理类

    /*=============================================================
    * Template 处理
    * Author : Danny,Li
    * E-mail : xing.dong.li@163.com
    * Edition: V-101014
    *=============================================================
    */
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Collections.Specialized;
    using System.Collections;
    using System.IO;

    namespace IRCommon
    {
    public class TemplateHelper
    {
    /// <summary>
    /// 私有构造方法,不允许创建实例
    /// </summary>
    private TemplateHelper()
    {
    // TODO: Add constructor logic here
    }

    /// <summary>
    /// Template File Helper
    /// </summary>
    /// <param name="templatePath">Templet Path</param>
    /// <param name="values">NameValueCollection</param>
    /// <returns>string</returns>
    public static string BulidByFile(string templatePath, NameValueCollection values)
    {
    return BulidByFile(templatePath, values, "[$", "]");
    }

    /// <summary>
    ///
    /// </summary>
    /// <param name="template"></param>
    /// <param name="values">NameValueCollection obj</param>
    /// <param name="prefix"></param>
    /// <param name="postfix"></param>
    /// <returns></returns>
    public static string Build(string template, NameValueCollection values, string prefix, string postfix)
    {
    if (values != null)
    {
    foreach (DictionaryEntry entry in values)
    {
    template
    = template.Replace(string.Format("{0}{1}{2}", prefix, entry.Key, postfix), entry.Value.ToString());
    }
    }
    return template;
    }

    /// <summary>
    ///
    /// </summary>
    /// <param name="templatePath"></param>
    /// <param name="values"></param>
    /// <param name="prefix"></param>
    /// <param name="postfix"></param>
    /// <returns></returns>
    public static string BulidByFile(string templatePath, NameValueCollection values, string prefix, string postfix)
    {
    StreamReader reader
    = null;
    string template = string.Empty;
    try
    {
    reader
    = new StreamReader(templatePath);
    template
    = reader.ReadToEnd();
    reader.Close();
    if (values != null)
    {
    foreach (string key in values.AllKeys)
    {
    template
    = template.Replace(string.Format("{0}{1}{2}", prefix, key, postfix), values[key]);
    }
    }
    }
    catch
    {

    }
    finally
    {
    if (reader != null)
    reader.Close();
    }
    return template;
    }
    }
    }

    3.c#的邮件发送函数

    //发送邮件通知
    private void SendMail(string email, string name, string sdate, string edate, string course, string point)
    {
    string mailFrom = MailHelper.MailServerFrom;
    string mailTo = string.Empty;
    string mailSubject = string.Empty;
    string mailBody = string.Empty;
    string mailAttch = string.Empty;
    string mailCode = string.Empty;
    string mailPriority = string.Empty;
    string mailCC = string.Empty;
    string resultMessage = "";
    if (!string.IsNullOrEmpty(email))
    {
    mailTo
    = email;
    mailSubject
    = "Change By Innovation 加分通知";
    try
    {
    string templetpath = Server.MapPath("../mailtemplate/irupoint.txt");
    NameValueCollection myCol
    = new NameValueCollection();
    myCol.Add(
    "ename", name);
    myCol.Add(
    "sdate", sdate);
    myCol.Add(
    "edate", edate);
    myCol.Add(
    "course", course);
    myCol.Add(
    "point", point);
    myCol.Add(
    "link", System.Configuration.ConfigurationManager.AppSettings["rootUrl"]);
    mailBody
    = TemplateHelper.BulidByFile(templetpath, myCol);
    MailHelper.SendNetMail(mailFrom, mailTo, mailSubject, mailBody, mailAttch, mailCode, mailPriority, mailCC,
    out resultMessage);
    }
    catch (Exception ex)
    {
    }
    }
    }

    4.目录中的mailtemplate/irupoint.txt

    <html>
    <head>
    <title>Change By Innovation 加分通知</title>
    <style type="text/css">
    body
    { font-family:Arial,"宋体"; font-size: 12px; font-weight: normal; color: #666666; }
    </style>
    </head>
    <body bgcolor="#F6FAFB">
    <p>[$ename] 您好,</p>
    <p>
    &nbsp;&nbsp;&nbsp;&nbsp;
    您在 [$sdate] 至 [$edate] 参加IRU培训课程《[$course]》,系统为您添加 [$point] 分。
    <br><br>&nbsp;&nbsp;&nbsp;&nbsp;
    感谢您对 Change By Innovation 的支持,请
    <a href='[$link]'>点击此处</a>登陆系统,查看您的总积分及排名信息。
    </p>
    <br><br>
    <p>&nbsp;&nbsp;&nbsp;&nbsp;系统邮件,请勿回复!</p>
    </body>
    </html>

    5.邮件发送的函数MailHelper.SendNetMail(...)

    参考http://www.cnblogs.com/dannyli/archive/2011/08/23/2150229.html

    需要在配置文件中配置SMTP服务器等信息

  • 相关阅读:
    COGS727 [网络流24题] 太空飞行计划
    Bzoj1692 洛谷P2870 [Usaco2007 Dec]队列变换
    Bzoj1029 [JSOI2007]建筑抢修
    Bzoj3168 [Heoi2013]钙铁锌硒维生素
    Bzoj4566 [Haoi2016]找相同字符
    Bzoj4771 七彩树
    Bzoj2597 [Wc2007]剪刀石头布
    Bzoj4773 负环
    HDU5772 String problem
    Bzoj1324 Exca王者之剑
  • 原文地址:https://www.cnblogs.com/dannyli/p/2150260.html
Copyright © 2020-2023  润新知