web.config
<!-- 配置发邮件:邮件访问登录地址-->
<add key="HttpsUrl" value="http://localhost:3334/Frame/Login.aspx" />
<add key="IsSendMail" value="" />
<!--qq邮箱-->
<add key="MailUser" value="xxcc@qq.com" />
<add key="MailName" value="邮件通知" />
<add key="MailHost" value="smtp.qq.com" />
<add key="HostPort" value="" />
<!-- qq邮箱码-->
<add key="MailPwd" value="测试自己邮箱密码" />


  公共方法 ConfigHelper
  public class ConfigHelper
{
/// <summary>
/// 根据Key取Value值
/// </summary>
/// <param name="key"></param>
public static string GetValue(string key)
{
return ConfigurationManager.AppSettings[key].ToString().Trim();
} /// <summary>
/// 根据Key修改Value
/// </summary>
/// <param name="key">要修改的Key</param>
/// <param name="value">要修改为的值</param>
public static void SetValue(string key, string value)
{
System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
xDoc.Load(HttpContext.Current.Server.MapPath("/XmlConfig/Config.xml"));
System.Xml.XmlNode xNode;
System.Xml.XmlElement xElem1;
System.Xml.XmlElement xElem2;
xNode = xDoc.SelectSingleNode("//appSettings"); xElem1 = (System.Xml.XmlElement)xNode.SelectSingleNode("//add[@key='" + key + "']");
if (xElem1 != null) xElem1.SetAttribute("value", value);
else
{
xElem2 = xDoc.CreateElement("add");
xElem2.SetAttribute("key", key);
xElem2.SetAttribute("value", value);
xNode.AppendChild(xElem2);
}
xDoc.Save(HttpContext.Current.Server.MapPath("/XmlConfig/Config.xml"));
} /// <summary>
/// 修改web.config的配置值
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public static void SetWebConfigValue(string key, string value) {
Configuration objConfig = WebConfigurationManager.OpenWebConfiguration("~"); AppSettingsSection objAppSettings = (AppSettingsSection)objConfig.GetSection("appSettings");
if (objAppSettings != null) {
//删除name,然后添加新值
objAppSettings.Settings.Remove(key);
objAppSettings.Settings.Add(key, value); //保存配置文件
objConfig.Save();
} }
}
   发送邮件
/// <summary>
/// 发送邮件
/// </summary>
public class SMTPManager
{
public static string MailUser = ConfigHelper.GetValue("MailUser");
public static string MailName = ConfigHelper.GetValue("MailName");
public static string MailHost = ConfigHelper.GetValue("MailHost");
public static string MailPwd = ConfigHelper.GetValue("MailPwd");
public static string IsSendMail = ConfigHelper.GetValue("IsSendMail");
public static string HostPort = ConfigHelper.GetValue("HostPort");
public static string EnableSsl = ConfigHelper.GetValue("EnableSsl");
/// <summary>
/// 发送邮件
/// </summary>
/// <param name=" sender">发送人、支持发送多个人每个地址用 ; 号隔开</param>
/// <param name="Name">名称</param>
/// <param name="Describe">内容</param>
/// <param name="File_Path">附件</param>
/// <returns></returns>
public static bool MailSending(string Sender, string Name, string Describe, string File_Path)
{
if(IsSendMail !="")
{
return false;
}
try
{
MailAddress from = new MailAddress(MailUser, MailName); //邮件的发件人
MailMessage mail = new MailMessage(); //设置邮件图片
AlternateView htmlBody = AlternateView.CreateAlternateViewFromString(Describe, null, "text/html");
LinkedResource lrImage = new LinkedResource(AppDomain.CurrentDomain.BaseDirectory + "/Themes/Images/"+ConfigHelper.GetValue("EmailPhoto"), "image/gif");
lrImage.ContentId = "webimg"; //此处的ContentId 对应 htmlBodyContent 内容中的 cid: ,如果设置不正确,请不会显示图片
htmlBody.LinkedResources.Add(lrImage);
mail.AlternateViews.Add(htmlBody); //设置邮件的标题
mail.Subject = Name;//任务名称 //设置邮件的发件人
//Pass:如果不想显示自己的邮箱地址,这里可以填符合mail格式的任意名称,真正发mail的用户不在这里设定,这个仅仅只做显示用
mail.From = from; //设置邮件的收件人
string address = "";
string displayName = "";
/**/
/* 这里这样写是因为可能发给多个联系人,每个地址用 ; 号隔开
一般从地址簿中直接选择联系人的时候格式都会是 :用户名1 < mail1 >; 用户名2 < mail 2>;
因此就有了下面一段逻辑不太好的代码
如果永远都只需要发给一个收件人那么就简单了 mail.To.Add("收件人mail");
*/
string[] mailNames = (Sender + ";").Split(';');
foreach (string name in mailNames)
{
if (name != string.Empty)
{
if (name.IndexOf('<') > )
{
displayName = name.Substring(, name.IndexOf('<'));
address = name.Substring(name.IndexOf('<') + ).Replace('>', ' ');
}
else
{
displayName = string.Empty;
address = name.Substring(name.IndexOf('<') + ).Replace('>', ' ');
}
mail.To.Add(new MailAddress(address, displayName));
}
} //设置邮件的抄送收件人
//这个就简单多了,如果不想快点下岗重要文件还是CC一份给领导比较好
//mail.CC.Add(new MailAddress("Manage@hotmail.com", "尊敬的领导"); //设置邮件的内容
mail.Body = FormatDescribe(Describe);
//设置邮件的格式
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.IsBodyHtml = true;
//设置邮件的发送级别
mail.Priority = MailPriority.Normal; //设置邮件的附件,将在客户端选择的附件先上传到服务器保存一个,然后加入到mail中
if (File_Path != "")
{
mail.Attachments.Add(new Attachment(File_Path));
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
} SmtpClient client = new SmtpClient();
//设置用于 SMTP 事务的主机的名称,填IP地址也可以了
client.Host = MailHost;
//设置用于 SMTP 事务的端口,默认的是 25
client.Port = int.Parse(HostPort);
client.EnableSsl = EnableSsl == "" ? true : false;
client.UseDefaultCredentials = false;
//这里才是真正的邮箱登陆名和密码, 用户名为 MailUser 密码是 MailPwd
string strMailPwd = MailPwd;
client.Credentials = new System.Net.NetworkCredential(MailUser, strMailPwd.Trim());
client.DeliveryMethod = SmtpDeliveryMethod.Network; ////如果发送失败,SMTP 服务器将发送 失败邮件
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; //都定义完了,正式发送了
client.Send(mail);
return true;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 格式化邮件内容
/// </summary>
/// <param name="Describe"></param>
/// <returns></returns>
public static string FormatDescribe(string Describe)
{
StringBuilder sb = new StringBuilder();
sb.Append("<table cellSpacing=0 cellPadding=0 width=100% border=1>"); sb.Append("<tr>");
sb.Append("<td bgColor=#ffffff colSpan=4 height=25>【管理系统】</td>");
sb.Append("</tr>"); sb.Append("<TR>");
sb.Append("<TD align=right width=9% bgColor=#eef7ff height=25>主 题</TD>");
sb.Append("<TD id=title bgColor=#ffffff colSpan=3><FONT face=宋体>");
sb.Append("管理邮件通知");
sb.Append("</FONT></TD>");
sb.Append("</TR>"); sb.Append("<TR>");
sb.Append("<TD align=right width=9% bgColor=#eef7ff height=250>内容</TD>");
sb.Append("<TD id=title bgColor=#ffffff colSpan=3><FONT face=宋体>");
sb.Append(Describe);
sb.Append("</FONT></TD>");
sb.Append("</TR>");
sb.Append("</table>"); return sb.ToString();
} /// <summary>
/// 发送电子邮件
/// </summary>
/// <param name="smtpserver">SMTP服务器</param>
/// <param name="userName">登录帐号</param>
/// <param name="pwd">登录密码</param>
/// <param name="nickName">发件人昵称</param>
/// <param name="strfrom">发件人</param>
/// <param name="strto">收件人</param>
/// <param name="subj">主题</param>
/// <param name="bodys">内容</param>
public static void SendMail(string smtpserver, string userName, string pwd, string nickName, string strfrom, string strto, string subj, string bodys)
{
try
{
SmtpClient _smtpClient = new SmtpClient();
_smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式
_smtpClient.Host = smtpserver;//指定SMTP服务器
_smtpClient.Credentials = new System.Net.NetworkCredential(userName, pwd);//用户名和密码 //MailMessage _mailMessage = new MailMessage(strfrom, strto);
MailAddress _from = new MailAddress(strfrom, nickName);
MailAddress _to = new MailAddress(strto);
MailMessage _mailMessage = new MailMessage(_from, _to);
_mailMessage.Subject = subj;//主题
_mailMessage.Body = bodys;//内容
_mailMessage.BodyEncoding = System.Text.Encoding.Default;//正文编码
_mailMessage.IsBodyHtml = true;//设置为HTML格式
_mailMessage.Priority = MailPriority.Normal;//优先级
_smtpClient.Send(_mailMessage);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
} }

C# 发送邮件通知的更多相关文章

  1. SqlServer 2008 R2定时备份数据库,并且发送邮件通知

    先配置数据库的邮件设置,这样才可以发送邮件. 2. 3. 4. 5. 6. 7. 8. 9. 10. 总的预览图,如图 执行这一段(先发送备份邮件,然后进行数据备份,将昨天的发送数据插入到另一张表中, ...

  2. Linux 上使用 Gmail SMTP 服务器发送邮件通知

    导读 假定你想配置一个 Linux 应用,用于从你的服务器或桌面客户端发送邮件信息.邮件信息可能是邮件简报.状态更新(如 Cachet).监控警报(如 Monit).磁盘时间(如 RAID mdadm ...

  3. 通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢

    通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢

  4. aircrack-ng后台跑包, 成功后自动发送邮件通知

    我的思路是直接用nohup守护进程输出结构到指定文件, 然后判断文件中"KEY FOUND"的字段. 启动aircrack-ng方式 nohup aircrack-ng -w /o ...

  5. 基于Windows Azure 搭建基于SharePoint 2010 Intranet、Extranet、Internet (4): 配置传出邮件服务: 使用 outlook.com 发送邮件通知

    前几篇文章,已经安装了SharePoint 2010,今天将演示如何配置传出邮件.由于某些原因,企业可能没有安装自己邮件服务器,此时我们可以使用公共的邮箱服务来发送邮件通知,比如outlook.com ...

  6. jenkins pipeline构建后发送邮件通知

    jenkins pipeline构建后发送邮件通知 mail配置 进入系统配置 找到最下边的邮件通知 创建任务 Pipeline片段 post { always { bat "" ...

  7. kettle定时任务_第三方合作方有订单自动发送邮件通知_20161214

    由于和第三方合作,需要知道第三方合作方有了订单后通知对方,如果每天查看数据太麻烦了,因此想到了用Kettle定时任务,先判断系统里有没有订单,如果有就执行查询调取订单数据并发送邮件作业,如果没有则不执 ...

  8. Linux学习-->如何通过Shell脚本实现发送邮件通知功能?

    1.安装和配置sendmail 不需要注册公网域名和MX记录(不需要架设公网邮件服务器),通过Linux系统自带的mail命令即可对公网邮箱发送邮件.不过mail命令是依赖sendmail的,所以我们 ...

  9. ecshop开发日志之虚拟商品发送邮件通知

    购买虚拟商品,系统会在支付后自动发送邮件到用户填写的邮件地址中,追踪过程如下首先在订单列表中可以获得到处理订单的php文件为flow.php,之后在最后一步url地址显示为http://localho ...

随机推荐

  1. Prometheus监控神器-Rules篇

    本章主要对如何使用Prometheus与Alertmanager组件集成配置,以及对警报规则 Rules 的俩种类型及其模板内容进行讲解. 与Alertmanager集成 Prometheus把产生的 ...

  2. 在centos 上安装python

    1.下载最新版本python源码包 下载地址为https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz 2.解压源码包 tar -zxf Pyt ...

  3. peewee的简单使用

    peewee的简单使用 peewee是一个轻量级的ORM框架,peewee完全可以应对个人或企业的中小型项目的Model层,上手容易,功能强大. 一.安装peewee模块 使用pip命令工具安装pee ...

  4. Nordic 52840-Timer定时器学习问题(一)

    今天在ble_app_blinky例程中移植定时器驱动,在编译过程中报出了两个错误,在此记录一下. 1. 在nRF_Dreivers中添加nrfx_timer.c文件 选中“nRF_Dreivers  ...

  5. I帧B帧P帧

    转载自:http://blog.csdn.net/abcjennifer/article/details/6577934 视频压缩中,每帧代表一幅静止的图像.而在实际压缩时,会采取各种算法减少数据的容 ...

  6. 2.Oracle数据库安装教程

    一.准备安装 基本都是按部就班. 使用的OS版本:OEL4 安装程序路径: /mnt/Oracle11g_linux_x86_64/database 创建用户 使用的.bash_profile 修改的 ...

  7. fsck知识点记录

    最近处理一个生产环境问题时,碰下一个以下现象,记录一下,便于以后出现类似问题时,快速的查找相应命令 问题现象 由于物理机的内存条出现故障,导致该节点上的所有虚机网络都不通,机房人员修复完物理内存以后, ...

  8. 第三篇Scrum冲刺博客--Interesting-Corps

    第三篇Scrum冲刺博客 站立式会议 1.会议照片 2.队友完成情况 团队成员 昨日完成 今日计划 鲍鱼铭 主页页面跳转社区功能及社区设计及布局实现 搜索页面跳转.设计及布局实现 叶学涛 编写个人页面 ...

  9. Python中print()函数不换行的方法以及分隔符替换

    一.让print()函数不换行 在Python中,print()函数默认是换行的.但是,在很多情况下,我们需要不换行的输出(比如在算法竞赛中).那么,在Python中如何做到这一点呢? 其实很简单.只 ...

  10. ACM study day3

    今天练了二分和快速幂,题目挺难的,挑几个我做上的说一下吧. 先给出几个二分和快速幂的模板函数: 二分 void BS(int m) { int x=,y=a[m-]-a[]; while(y-x> ...