C#发送邮件类
一、定义邮件发送类
/// <summary>
/// 发送邮件
/// </summary>
public class MailHelper
{
#region 私有变量 private string _mailTo; //接收方
private string _mailFrom; //发送方
private string _subject; //标题
private string _body; //内容
private string _username; //邮件用户
private string _pwd; //密码
private string _smtpclient; //smtp服务器名字
private string _youname; //关联姓名
private bool _bodyhtml = false; //正文是否为html格式
private List<string> _listCc = new List<string>();//抄送
//编码暂硬性规定为GB2312
private Encoding _encoding = Encoding.GetEncoding(); #endregion #region 私有属性 /// <summary>
/// smtp服务器
/// </summary>
private string SmtpClient
{
set
{
//格式如smtp.sina.com
Regex regex = new Regex(@"^smtp(\.([a-zA-Z0-9])+){2}$");
if (regex.IsMatch(value))
this._smtpclient = value;
else
throw new ArgumentException("smtp服务器设置失败");
}
} /// <summary>
/// 发送方
/// </summary>
private string MailTo
{
set
{
if (IsValidEMail(value))
this._mailTo = value;
else
throw new ArgumentException("发送方设置错误");
}
} /// <summary>
/// 用户名
/// </summary>
private string UserName
{
set
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException("用户名不能为空");
if (!this._mailFrom.StartsWith(value))
throw new ArgumentException("用户名设置和发送方不匹配");
this._username = value;
}
} /// <summary>
/// 密码
/// </summary>
private string Pwd
{
set
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException("密码不能为空");
this._pwd = value;
}
} /// <summary>
/// 发送给
/// </summary>
private string MailFrom
{
set
{
if (IsValidEMail(value))
this._mailFrom = value;
else
throw new ArgumentException("接收方设置错误");
}
} /// <summary>
/// 关联姓名
/// </summary>
private string YouName
{
set
{
if (string.IsNullOrEmpty(value))
this._youname = this._username;
else
this._youname = value;
}
} #endregion #region 私有方法 /// <summary>
/// 检测email格式
/// </summary>
/// <param name="email">email</param>
/// <returns>true为正确</returns>
private bool IsValidEMail(string email)
{
Regex regex = new Regex(@"\w+([-+.]\w+)*\w{2,}@\w+([-.]\w+)*\.\w+([-.]\w+)*");
if (regex.IsMatch(email))
return true;
else
return false;
} #endregion #region 公共属性 /// <summary>
/// 标题
/// </summary>
public string Subject
{
set
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException("标题不能为空");
this._subject = value;
}
} /// <summary>
/// 正文
/// </summary>
public string Body
{
set
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException("正文不能为空");
this._body = value;
}
} #endregion #region 公共方法 /// <summary>
/// 构造函数
/// </summary>
/// <param name="smtpclient">smtp服务器,格式如"smtp.sina.com"</param>
/// <param name="mailFrom">发送方,格式如"mymail@sina.com"</param>
/// <param name="username">登入名,必填,注意和发送方匹配</param>
/// <param name="pwd">密码,必填</param>
/// <param name="mailTo">接收方,格式如"youmail@sina.com"</param>
/// <param name="subject">标题,最好别为空</param>
/// <param name="body">正文,必填</param>
/// <param name="bodyhtml">正文是否为html格式</param>
/// <param name="youName">关联姓名, 选填</param>
public MailHelper(string smtpclient, string mailFrom,
string username, string pwd, string mailTo,
string subject, string body,
bool bodyhtml, string youName)
{
this.SmtpClient = smtpclient;
this.MailFrom = mailFrom;
this.UserName = username;
this.Pwd = pwd;
this.MailTo = mailTo;
this.Subject = subject;
this.Body = body;
this.YouName = youName;
this._bodyhtml = bodyhtml;
} /// <summary>
/// 添加抄送邮箱, 可多次调用
/// </summary>
/// <param name="mailCc">抄送的email</param>
public void AddMmailCc(string mailCc)
{
if (IsValidEMail(mailCc))
this._listCc.Add(mailCc);
else
throw new ArgumentException("抄送'" + mailCc + "'地址错误");
} /// <summary>
/// 发送邮件
/// </summary>
/// <returns>true-发送成功</returns>
public void Send()
{
Encoding encoding = this._encoding; MailMessage Message = new MailMessage(
new MailAddress(this._mailFrom, this._youname, this._encoding),
new MailAddress(this._mailTo)); Message.SubjectEncoding = this._encoding;
Message.Subject = this._subject;
Message.BodyEncoding = this._encoding;
Message.Body = this._body;
Message.IsBodyHtml = this._bodyhtml;
foreach (string strCc in _listCc)
{
Message.CC.Add(new MailAddress(strCc));
}
SmtpClient smtpClient = new SmtpClient(this._smtpclient);
smtpClient.Credentials = new NetworkCredential(this._username, this._pwd); smtpClient.Timeout = ;
smtpClient.Send(Message); //异步调用, 避免阻塞
//Timeout 属性对 SendAsync 调用没有影响
//smtpClient.SendAsync(Message, null);
} #endregion
}
二、调用
MailHelper mail = new MailHelper("smtp.sina.cn", "邮箱帐号@sina.cn", "登录帐号", "登录密码", "对方邮箱帐号", "邮件标题", "<a href='http://www.baidu.com'>点一点</a>", true, "");
mail.Send();
ps:个人邮箱发送以后,接收方可能会将邮件归到垃圾箱
C#发送邮件类的更多相关文章
- python封装发送邮件类
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart i ...
- asp.net C#发送邮件类
很久前写的一个简单邮件发送类分享给大家: using System; using System.Data; using System.Configuration; using System.Web; ...
- PHP功能齐全的发送邮件类
下面这个类的功能则很强大,不但能发html格式的邮件,还可以发附件 <?php class Email { //---设置全局变量 var $mailTo = ""; // ...
- php 发送邮件类
//******************** 配置信息 ******************************** $smtpserver = "smtp.263 ...
- PHP CI框架email类发送邮件
用CI框架发送邮件类 在中文标题太长的情况下会出现乱码,搜索后说是发送邮件的时候有标题长度的限制,按说的方法修改后,还是没能得到解决,后来发现需要转换邮件标题的编码,解决方法如下: 打开 librar ...
- PHP多种形式发送邮件
1. 使用 mail() 函数 没什么好讲的,就是使用系统自带的smtp系统来发送,一般是使用sendmail来发.这个按照各个系统不同而定.使用参考手册. 2. 使用管道的形式 昨天刚测试成功,使用 ...
- php实现发送邮件
smtp.php: <?php class smtp { /* Public Variables */ var $smtp_port; var $time_out; ...
- PHP中发送邮件的几种方法总结
1. 使用 mail() 函数 没什么好讲的,就是使用系统自带的smtp系统来发送,一般是使用sendmail来发.这个按照各个系统不同而定.使用参考手册. 2. 使用管道的形式 昨天刚测试成功,使用 ...
- 用Java发送邮件
要用Java发送邮件,除过JDK本身的jar包之外,还需要两个额外的jar包:JavaMail和JAF.当然,如果你使用的JavaEE的JDK,那就不用单独去网上下载了,因为JavaEE的JDK中已经 ...
随机推荐
- Python闭包详解
Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >> ...
- Python自动化测试 -ConfigParser模块读写配置文件
C#之所以容易让人感兴趣,是因为安装完Visual Studio, 就可以很简单的直接写程序了,不需要做如何配置. 对新手来说,这是非常好的“初体验”, 会激发初学者的自信和兴趣. 而有些语言的开发环 ...
- 用Linux命令行实现删除和复制指定类型的文件
(一)Linux 删除当前目录及子目录中所有某种类型的文件 方法1 : 此方法不能处理目录中带空格的那些. rm -rf `find . -name "*.example"` Li ...
- pipe----管道----fork
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h&g ...
- 基于gulp编写的一个简单实用的前端开发环境好了,安装完Gulp后,接下来是你大展身手的时候了,在你自己的电脑上面随便哪个地方建一个目录,打开命令行,然后进入创建好的目录里面,开始撸代码,关于生成的json文件请点击这里https://docs.npmjs.com/files/package.json,打开的速度看你的网速了注意:以下是为了演示 ,我建的一个目录结构,你自己可以根据项目需求自己建目
自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...
- twemproxy接收流程探索——twemproxy代码分析正编
在这篇文章开始前,大家要做好一个小小的心理准备,由于twemproxy代码是一份优秀的c语言,为此,在twemproxy的代码中会大篇幅使用c指针.但是不论是普通类型的指针还是函数指针,都可以让我们这 ...
- MySQL5.7解压版详细安装教程,在最后一步需要随机密码
这里为百度经验 http://jingyan.baidu.com/article/ff42efa93580c4c19e2202b6.html 然而在最后一步,回车不能够越过密码. 需要在解压的mysq ...
- ASP.NET Zero--8.一个例子(1)菜单添加
以一个商品分类管理功能来编写,代码尽量简单易懂.从一个实体开始,一直到权限控制,由浅到深一步步对功能进行完善. 1.打开语言文件 [..\MyCompanyName.AbpZeroTemplate.C ...
- SpringMVC第一天(其他)
SpringMVC第一天 框架课程 课程计划 参数绑定 SpringMVC默认支持的类型 简单数据类型 Pojo类型 Pojo包装类型 自定义参数绑定 SpringMVC和Struts2的区别 高级参 ...
- Java8 HashMap之tableSizeFor
Java8对许多内置的容器进行了优化与拓展,其中对HashMap的改变尤其大.之后将进行总结. 最近在看HashMap的源码时,发现了里面好多很不错的算法,相比Java7从性能上提高了许多.其中tab ...