1. 配置文件 App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- Smtp 服务器 -->
<add key="SmtpHost" value="smtp.qq.com" />
<!-- Smtp 服务器端口 -->
<add key="SmtpPort" value="25" />
<!--发送者 Email 地址-->
<add key="FromEmailAddress" value="xx@qq.com" />
<!--发送者 Email 密码-->
<add key="FormEmailPassword" value="??????" />
</appSettings>
</configuration>

2.帮助类代码

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text; namespace ConsoleApplication1
{
/// <summary>
/// Author : yenange
/// Date : 2014-02-26
/// Description : 邮件发送辅助类
/// </summary>
public class EmailHelper
{
#region [ 属性(发送Email相关) ]
private string _SmtpHost = string.Empty;
private int _SmtpPort = -1;
private string _FromEmailAddress = string.Empty;
private string _FormEmailPassword = string.Empty; /// <summary>
/// smtp 服务器
/// </summary>
public string SmtpHost
{
get
{
if (string.IsNullOrEmpty(_SmtpHost))
{
_SmtpHost = ConfigurationManager.AppSettings["SmtpHost"];
}
return _SmtpHost;
}
}
/// <summary>
/// smtp 服务器端口 默认为25
/// </summary>
public int SmtpPort
{
get
{
if (_SmtpPort == -1)
{
if (!int.TryParse(ConfigurationManager.AppSettings["SmtpPort"], out _SmtpPort))
{
_SmtpPort = 25;
}
}
return _SmtpPort;
}
}
/// <summary>
/// 发送者 Eamil 地址
/// </summary>
public string FromEmailAddress
{
get
{
if (string.IsNullOrEmpty(_FromEmailAddress))
{
_FromEmailAddress = ConfigurationManager.AppSettings["FromEmailAddress"];
}
return _FromEmailAddress;
}
} /// <summary>
/// 发送者 Eamil 密码
/// </summary>
public string FormEmailPassword
{
get
{
if (string.IsNullOrEmpty(_FormEmailPassword))
{
_FormEmailPassword = ConfigurationManager.AppSettings["FormEmailPassword"];
}
return _FormEmailPassword;
}
}
#endregion #region [ 属性(邮件相关) ]
/// <summary>
/// 收件人 Email 列表,多个邮件地址之间用 半角逗号 分开
/// </summary>
public string ToList { get; set; }
/// <summary>
/// 邮件的抄送者,支持群发,多个邮件地址之间用 半角逗号 分开
/// </summary>
public string CCList { get; set; }
/// <summary>
/// 邮件的密送者,支持群发,多个邮件地址之间用 半角逗号 分开
/// </summary>
public string BccList { get; set; }
/// <summary>
/// 邮件标题
/// </summary>
public string Subject { get; set; }
/// <summary>
/// 邮件正文
/// </summary>
public string Body { get; set; } private bool _IsBodyHtml = true;
/// <summary>
/// 邮件正文是否为Html格式
/// </summary>
public bool IsBodyHtml
{
get { return _IsBodyHtml; }
set { _IsBodyHtml = value; }
}
/// <summary>
/// 附件列表
/// </summary>
public List<Attachment> AttachmentList { get; set; }
#endregion #region [ 构造函数 ]
/// <summary>
/// 构造函数 (body默认为html格式)
/// </summary>
/// <param name="toList">收件人列表</param>
/// <param name="subject">邮件标题</param>
/// <param name="body">邮件正文</param>
public EmailHelper(string toList, string subject, string body)
{
this.ToList = toList;
this.Subject = subject;
this.Body = body;
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="toList">收件人列表</param>
/// <param name="subject">邮件标题</param>
/// <param name="isBodyHtml">邮件正文是否为Html格式</param>
/// <param name="body">邮件正文</param>
public EmailHelper(string toList, string subject, bool isBodyHtml, string body)
{
this.ToList = toList;
this.Subject = subject;
this.IsBodyHtml = isBodyHtml;
this.Body = body;
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="toList">收件人列表</param>
/// <param name="ccList">抄送人列表</param>
/// <param name="bccList">密送人列表</param>
/// <param name="subject">邮件标题</param>
/// <param name="isBodyHtml">邮件正文是否为Html格式</param>
/// <param name="body">邮件正文</param>
public EmailHelper(string toList, string ccList, string bccList, string subject, bool isBodyHtml, string body)
{
this.ToList = toList;
this.CCList = ccList;
this.BccList = bccList;
this.Subject = subject;
this.IsBodyHtml = isBodyHtml;
this.Body = body;
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="toList">收件人列表</param>
/// <param name="ccList">抄送人列表</param>
/// <param name="bccList">密送人列表</param>
/// <param name="subject">邮件标题</param>
/// <param name="isBodyHtml">邮件正文是否为Html格式</param>
/// <param name="body">邮件正文</param>
/// <param name="attachmentList">附件列表</param>
public EmailHelper(string toList, string ccList, string bccList, string subject, bool isBodyHtml, string body, List<Attachment> attachmentList)
{
this.ToList = toList;
this.CCList = ccList;
this.BccList = bccList;
this.Subject = subject;
this.IsBodyHtml = isBodyHtml;
this.Body = body;
this.AttachmentList = attachmentList;
}
#endregion #region [ 发送邮件 ]
/// <summary>
/// 发送邮件
/// </summary>
/// <returns></returns>
public void Send()
{
SmtpClient smtp = new SmtpClient(); //实例化一个SmtpClient
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //将smtp的出站方式设为 Network
smtp.EnableSsl = false; //smtp服务器是否启用SSL加密
smtp.Host = this.SmtpHost; //指定 smtp 服务器地址
smtp.Port = this.SmtpPort; //指定 smtp 服务器的端口,默认是25,如果采用默认端口,可省去
smtp.UseDefaultCredentials = true; //如果你的SMTP服务器不需要身份认证,则使用下面的方式,不过,目前基本没有不需要认证的了
smtp.Credentials = new NetworkCredential(this.FromEmailAddress, this.FormEmailPassword); //如果需要认证,则用下面的方式 MailMessage mm = new MailMessage(); //实例化一个邮件类
mm.Priority = MailPriority.Normal; //邮件的优先级,分为 Low, Normal, High,通常用 Normal即可
mm.From = new MailAddress(this.FromEmailAddress, "管理员", Encoding.GetEncoding(936)); //收件人
if (!string.IsNullOrEmpty(this.ToList))
mm.To.Add(this.ToList);
//抄送人
if (!string.IsNullOrEmpty(this.CCList))
mm.CC.Add(this.CCList);
//密送人
if (!string.IsNullOrEmpty(this.BccList))
mm.Bcc.Add(this.BccList); mm.Subject = this.Subject; //邮件标题
mm.SubjectEncoding = Encoding.GetEncoding(936); //这里非常重要,如果你的邮件标题包含中文,这里一定要指定,否则对方收到的极有可能是乱码。
mm.IsBodyHtml = this.IsBodyHtml; //邮件正文是否是HTML格式
mm.BodyEncoding = Encoding.GetEncoding(936); //邮件正文的编码, 设置不正确, 接收者会收到乱码
mm.Body = this.Body; //邮件正文
//邮件附件
if (this.AttachmentList != null && this.AttachmentList.Count > 0)
{
foreach (Attachment attachment in this.AttachmentList)
{
mm.Attachments.Add(attachment);
}
}
//发送邮件,如果不返回异常, 则大功告成了。
smtp.Send(mm);
}
#endregion
}
}

3.测试代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Mail;
using System.Configuration; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
EmailHelper email = new EmailHelper("xxx@qq.com,xxx@qq.com", "测试邮件2", "<html><body><div style='color:red;'>测试内容</div></body></html>");
email.Send();
Console.WriteLine("发送成功!");
}
catch (Exception ex)
{
Console.WriteLine("发送失败!失败原因:");
Console.WriteLine(ex.Message);
}
Console.Read();
}
}//end of class Program
}//end of namespace

C# Email 帮助类 EmailHelper的更多相关文章

  1. .Net Email操作类

    using System; using System.Text; using System.Net.Mail; using System.Net; using System.Linq; using S ...

  2. asp.net C#发送邮件类

    很久前写的一个简单邮件发送类分享给大家: using System; using System.Data; using System.Configuration; using System.Web; ...

  3. spring使用Email邮件系统

    1.提供邮件信息发送接收,附件绑定功能. 1.配置spring-email.xml文件 <context:property-placeholder location="classpat ...

  4. Java类的设计----Object 类

    Object类 Object类是所有Java类的根父类如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类 public class Person { ... } 等价于: ...

  5. php异常处理类

    <?php header('content-type:text/html;charset=UTF-8'); // 创建email异常处理类 class emailException extend ...

  6. java邮件工具类【最终版】

    http://www.xdemo.org/java-mail/ 对比链接中,添加了抄送和暗抄送功能(已解决,如图代码:抄送不能多个用户,会报错,未解之谜) sendHtmlmail方法可以发送附件以及 ...

  7. android Email总结文档

    目录:src\com.android.email.activity 一. Welcome.java 根据AndroidManifest.xml可知该文件为程序入口文件: 加载该文件时,查询数据库账户列 ...

  8. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  9. [Java] JavaMail 发送带图片的 html 格式的邮件

    JavaMail 发送的邮件正文和附件是相互独立的,但是内置图片需要定位图片在正文中的位置,所以内置图片和邮件正文是互相依赖的. 发送带附件的邮件可参考JavaMail 发送 html 格式.带附件的 ...

随机推荐

  1. 在Linux深度系统deepin下安装docker

    wget -qO- https://get.docker.com/ | sh wget -qO- https://get.docker.com/ | sh

  2. mysql 面试100 问(精华学习)。待开始理

    https://juejin.im/post/6850037271233331208 https://juejin.im/entry/6844903681091977229

  3. TCP特点

    1.基于字节流:面向连接:可靠传输:缓冲传输:全双工:流量控制.TCP如何保证可靠性:差错:校验和丢包:超时重传+确认失序:seq(序号)重复:seq(序号)1.数据被分割成TCP认为最合适发送的数据 ...

  4. Fiddler的一系列学习瞎记2(没有章法的笔记)

    前言 不适合小白,因为很多需要小白来掌握的东西我都没有写,就是补充自己还不会的东西,所以,有些同僚看起来可能感觉不是很清楚. 正文: 瞎记2-什么是代理服务器 1.web代理服务器,是在客户端和服务器 ...

  5. 使用spring框架进行aop编程实现方法调用前日志输出

    aop编程 之使用spring框架实现方法调用前日志输出 使用spring框架实现AOP编程首先需要搭建spring框架环境: 使用Spring框架实现AOP工程编程之后,不需要我们去写代理工厂了,工 ...

  6. python编码规范以及推导式的编写

    一.python 的编码规范

  7. SixLabors.ImageSharp 实践小结

    前言 之前写过一篇 Linux/Docker 中使用 System.Drawing.Common 踩坑小计, 当时主要是有一块图像处理的需要从 .net framework 迁移到 .net core ...

  8. day02-多任务(进程和协程)

    一.多任务的概念       简单地说,就是操作系统可以同时运行多个任务.打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务,至少同时有3个任务正在运行.还有很多任务 ...

  9. phpstudy搭建网站只能访问首页,其他路由访问404

    今天博主遇到了一个很奇葩的问题,电脑下载了一个phpstudy搭建网站,框架用的是tp,但是除了输入域名能访问,其他页面都访问不了 经过博主的疯狂问大佬,以及百度,终于解决了这个问题 这次出现问题的原 ...

  10. 对于char,short和byte类型的运算

    对于char,short和byte这些类型在计算时都会提升到int型来计算,所以a+b=3(这个3是int型的,所以我们需要将它强转成为byte类型,才不会出错.但是使用 += 或者 ++ 运算符可以 ...