1.写 Html5 的 EDM 模板

EDM 源代码示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Html5-代码示例</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">
        img {
            border: none;
        }
        table {
          border-spacing: 0;
          border-collapse: collapse;
        }
        td {
          word-break: break-word;
          -webkit-hyphens: auto;
          -moz-hyphens: auto;
          hyphens: auto;
          border-collapse: collapse !important;
        }
        table, tr, td {
          padding: 0;
        }
        .auto-style1 {
            height: 28px;
        }
    </style>
</head>
<body>
    <table bgcolor="#f3f4e6" width="900" align="center" border="0" cellspacing="0" cellpadding="0" class="body">
        <tbody>
            <tr>
                <td width="100%">
                    <table width="100%" height="55" align="center" border="0" cellspacing="0" cellpadding="0">
                        <tbody>
                            <tr>
                                <td height="55" align="right" bgcolor="#ffc439">
                                    <td>#UserNsame#</td>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </td>
            </tr>
        </tbody>
    </table>
</body>
</html>

2.邮件发送核心代码

public class MyEmailCode
 {

#region  模板获取
        /// 获取邮件模板
        public static string GetMailTemp(string tempPath, string UserName)
        {
            StringBuilder content = new StringBuilder();
            if (File.Exists(tempPath))
            {
              
                using (StreamReader sr = new StreamReader(tempPath, Encoding.GetEncoding("utf-8")))
                {
                    String srLine;
                    while ((srLine = sr.ReadLine()) != null)
                    {
                        content.AppendLine(srLine);
                    }
                    content.Replace("#UserName#", UserName);
                }
                return content.ToString();
            }
            return null;
        }
        #endregion

static bool SendEmail(string from, string to, string content, string title, out string message, IList<string> ccs = null, IList<string> bccs = null)
        {
            Encoding encoding = Encoding.GetEncoding("utf-8");
            string strHost = host;
            string strAcount = account;
            string strPwd = pwd;
            string strForm = from;
            string strTo = to;
            SmtpClient _smtpClient = new SmtpClient();
            _smtpClient.Host = strHost;
            _smtpClient.Credentials = new System.Net.NetworkCredential(strAcount,strPwd);

_smtpClient.Port = 587;

_smtpClient.EnableSsl = true;

MailMessage _mailMessage = new MailMessage(new MailAddress(strForm, "", encoding),

new MailAddress(strTo, "", encoding));

_mailMessage.Subject = title;

_mailMessage.Body = content;

_mailMessage.BodyEncoding = encoding;

_mailMessage.IsBodyHtml = true;

_mailMessage.Priority = MailPriority.Normal;

if(ccs!=null)

foreach (string cc in ccs)

{

if (!string.IsNullOrEmpty(cc))

{   _mailMessage.CC.Add(cc);    }

}

if(bccs!=null)
                foreach (string bcc in bccs)
                {
                    if (!string.IsNullOrEmpty(bcc))
                    {
                        _mailMessage.CC.Add(bcc);
                    }
                }

try

{

var sendThread = new Thread(SendMailCore);

sendThread.Start(_mailMessage);

_smtpClient.Send(_mailMessage);

message = null;

return true;

}

catch (Exception ex)

{

message = ex.Message;

return false;

}

}

private static void SendMailCore(object message)

{

//邮件配置 Host,账户和密码

string mailHost = ConfigurationManager.AppSettings["MailHost"].Trim().ToString();

string mailAccount = ConfigurationManager.AppSettings["MailAccount"].Trim().ToString();

string mailPassword = ConfigurationManager.AppSettings["MailPassword"].Trim().ToString();

MailMessage msg = message as MailMessage;             SmtpClient smtpClient = new SmtpClient

{

Host = mailHost,                 Port =587,                 EnableSsl = true,

Credentials = new System.Net.NetworkCredential { UserName = mailAccount, Password = mailPassword }

};

smtpClient.Send(msg);

}

public static bool SendEmail(string mailTitle,string toEmail, string content, out string message,IList<string> ccEmail=null, IList<string> bccEmail=null)

{

string mailFrom= ConfigurationManager.AppSettings["MailAccount"].Trim().ToString();

return SendEmail( mailFrom, toEmail, content, mailTitle, out message, ccEmail, bccEmail);

}

3.方法调用

string _pathTemp = Server.MapPath("");//html 路径
string   _mailTitle = "";//邮件文件头

string strContent = EmailCode.GetMailTemp(_pathTemp, GuRuAcount, GuRuPassword);
MyEmailCode.SendEmail(_mailTitle, email, strContent, out message);

实战篇之实现 OutLook 中以 EDM 形式发送通知邮件的更多相关文章

  1. 在Delphi中使用indy SMTP发送gmail邮件[转]

    在Delphi中使用indy SMTP发送gmail邮件[转] 2012-01-01 22:44:30|  分类: Delphi |  标签: |举报 |字号大中小 订阅     在Delphi中发送 ...

  2. Outlook中在Exchange服务器无法保存邮件副本

    最近帮同事设置Outlook2007,结果她直接登录公司网页Exchange,发现存在Exchange上的邮件副本全没了,原以为是Outlook邮箱账号设置里”保存服务器项副本“没打勾,后来才发现账号 ...

  3. 黑客攻防技术宝典web实战篇:查找源代码中的漏洞习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 列出 3 种可在源代码中找到明确签名的常见漏洞. (a) 跨站点脚本(b) SQL 注入( ...

  4. [linux] shell脚本编程-统计日志文件中的设备号发通知邮件

    1.日志文件列表 比如:/data1/logs/2019/08/15/ 10.1.1.1.log.gz 10.1.1.2.log.gz 2.统计日志中的某关键字shell脚本 zcat *.gz|gr ...

  5. 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序

    如何在Visual Studio 2017中使用C# 7+语法   前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...

  6. Web安全测试中常见逻辑漏洞解析(实战篇)

    Web安全测试中常见逻辑漏洞解析(实战篇) 简要: 越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽,对信息进行增删改 ...

  7. 二、Redis基本操作——String(实战篇)

    小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...

  8. AngularJS in Action读书笔记6(实战篇)——bug hunting

    这一系列文章感觉写的不好,思维跨度很大,原本是由于与<Angularjs in action>有种相见恨晚而激发要写点读后感之类的文章,但是在翻译或是阐述的时候还是会心有余而力不足,零零总 ...

  9. ROS2.9.27架设网吧软路由实战篇之端口映射与回流

    转载:http://blog.csdn.net/zm2714/article/details/7924280 上一篇:ROS2.9.27架设网吧软路由实战篇之连通网络,主要讲述了网吧架设软路由ROS2 ...

随机推荐

  1. python爬虫21 | 对于b站这样的滑动验证码,不好意思,照样自动识别

    今天 要来说说滑动验证码了 大家应该都很熟悉 点击滑块然后移动到图片缺口进行验证 现在越来越多的网站使用这样的验证方式 为的是增加验证码识别的难度 那么 对于这种验证码 应该怎么破呢 接下来就是 学习 ...

  2. PAT 1135 Is It A Red-Black Tree

    There is a kind of balanced binary search tree named red-black tree in the data structure. It has th ...

  3. SpringBoot yaml的配置及使用

    application.yml配置如下 person:     lastName: hello     age:      boss: false     birth: //     maps: {k ...

  4. P3372 【模板】线段树 1 洛谷

    https://www.luogu.org/problem/show?pid=3372 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 ...

  5. CI session 类的用法

    最近使用codeingiter框架,发现默认的session 不是很好用,以下是用法总结:使用的是2.0.2的版本 1.扩展自带的session类:application/libraries/MY_s ...

  6. 第6章 TCP/IP路由协议故障处理

    第6章 TCP/IP路由协议故障处理 一.缺省网关 当包的目的地址不在路由器的路由表中,如路由器配置了缺省网关,则转发到缺省网关,否则就丢弃. Show ip route :查看Cisco路由器的缺省 ...

  7. HLJU 1188 Matrix (二维树状数组)

    Matrix Time Limit: 4 Sec  Memory Limit: 128 MB Description 给定一个1000*1000的二维矩阵,初始矩阵中每一个数都为1,然后为矩阵有4种操 ...

  8. BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js

    BAT 前端开发面经 —— 吐血总结   目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...

  9. C#根据规则生成6位随机码

    #region 获得6位优惠码 zhy public static string CreatePromoCode(string code) { if (code == "") { ...

  10. SD和SDHC和SDXC卡的差别是什么

    SD内存卡和SDHC内存卡有什么差别? SDHC和SD的差别事实上也就是SD 1.0/1.1规范和SD 2.0规范的差别.尽管编编手上有一份SD 1.1规范的文件.只是因为SD 2.0规范仅仅有SDA ...