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. 高效c/c++日志工具zlog使用介绍

    1. zlog简介 zlog的资料网上很多,这里不在详细说明:zlog是用c写的一个日志工具,非常小,而且高效,可以同时向控制台和文件中输出,日志接口与printf使用基本一样,所以使用起来很简单. ...

  2. 【Python学习笔记】字符串拼接方法(5种)总结

    字符串的 5 种拼接方法: “+”号 “,”号 直接连接 格式化 多行字符串拼接 第一种:“+”号 print("Hello"+"Python") 打印结果: ...

  3. Web 开发必须掌握的三个技术:Token、Cookie、Session

    在Web应用中,HTTP请求是无状态的.即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session. Cookie Cookie ...

  4. 2020-07-26:如何用 socket 编程实现 ftp 协议?

    福哥答案2020-07-26: 功能用户输入user username.pass password注册,注册后输入dir查看服务器文件列表,输入get filename path下载文件到指定路径. ...

  5. 栈及其简单应用(二)(python代码)

    一.括号判定 前一篇文章我们介绍了栈的简单应用中,关于括号的判定,但那只是一种括号的判定,下面我们来介绍多种括号混合使用时,如何判断括号左右一一对应. 比如“{}{(}(][”这种情况,需要对一种括号 ...

  6. Pandas和常见数据处理小模块

    文章目录 前言 Pandas部分 根据某一列找另一列 根据条件变换每一列 按照标签保存为DataFrame 数据处理 切分数据集和测试集 其他 计时 前言 pandas 确实很好用, 但是网上的教程参 ...

  7. 题解 洛谷P3469

    题目每个割点去掉后会导致多少对点不能连通 考虑跑Tarjan的时候记录每个儿子的size,那么去掉这个割点后其他的点都不能和这个儿子连通 注意每个点去掉后它本身就不能与其他所有点连通 还有就是题目里求 ...

  8. Mybatis-08-动态SQL

    动态SQL 什么是动态SQL? 根据不同的条件生成不同的SQL语句. if choose(where,otherwise) trim(where,set) foreach 搭建环境 create ta ...

  9. 报错:无效的列类型: 1111;must be specified for all nullable parameters.

    org.springframework.jdbc.UncategorizedSQLException: Error setting null parameter. Most JDBC drivers ...

  10. Python 读取word中表格数据、读取word修改并保存、替换word中词汇、读取word中每段内容,读取一段话中相同样式内容,理解Document中run

    from docx import Document path = r'D:\pywork\12' # word信息表所在文件夹 w = Document(path + '/' + 'word信息表.d ...