代码实现:

MailSmtp ms = new MailSmtp("smtp.qq.com","","xxxx");

          //可选参数
ms.SetCC("610262374@qq.com");//抄送可以多个
ms.SetBC("610262374@qq.com");//暗送可以多个
ms.SetIsHtml(true);//默认:true
ms.SetEncoding(System.Text.Encoding.UTF8);//设置格式 默认utf-8
ms.SetIsSSL(true);//是否ssl加密 默认为false //调用函数
bool isSuccess = ms.Send("1215247044@qq.com", "test", "610262374@qq.com", "哈哈", "哈哈", Server.MapPath("~/Test.dll")); //输出结果
Response.Write(ms.Result);

封装类:

using System;
using System.IO;
using System.Web.UI.WebControls;
using System.Text;
using System.Net.Mail;
using System.Net;
using System.Linq;
using System.Text.RegularExpressions; namespace SyntacticSugar
{
/// <summary>
/// ** 描述:邮件发送
/// ** 创始时间:2015-6-8
/// ** 修改时间:-
/// ** 作者:sunkaixuan
/// ** 使用说明:http://www.cnblogs.com/sunkaixuan/p/4562147.html
/// </summary>
public class MailSmtp
{
/// <summary>
/// 设置邮件编码类型
/// </summary>
/// <param name="contentEncoding"></param>
public void SetEncoding(Encoding contentEncoding)
{
this._encoding = contentEncoding; }
/// <summary>
///设置邮件正文是否为 Html 格式
/// </summary>
/// <param name="isHtml"></param>
public void SetIsHtml(bool isHtml)
{
this._isHtml = isHtml;
}
/// <summary>
/// 抄送
/// </summary>
/// <param name="cc"></param>
public void SetCC(params string[] cc)
{
this._cc = cc;
}
/// <summary>
/// 暗送
/// </summary>
/// <param name="cc"></param>
public void SetBC(params string[] bc)
{
this._bcc = bc;
}
/// <summary>
/// 是否ssl加密
/// </summary>
/// <param name="isSSL"></param>
public void SetIsSSL(bool isSSL)
{
this._smtp.EnableSsl = isSSL;
} /// <summary>
/// 构造函数
/// </summary>
/// <param name="host"></param>
/// <param name="username">邮件账号</param>
/// <param name="password">密码</param>
public MailSmtp(string host, string username, string password)
{
this._smtp.Host = host;
this._smtp.Port = 0x19;
this._smtp.EnableSsl = false;
this._isHtml = true;
this._encoding = Encoding.UTF8;
if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
{
this._smtp.UseDefaultCredentials = false;
}
else
{
this._smtp.Credentials = new NetworkCredential(username, password);
}
} /// <summary>
/// 发送邮件
/// </summary>
/// <param name="from">发件人邮件地址</param>
/// <param name="sender">发件人显示名称</param>
/// <param name="to">收件人地址</param>
/// <param name="subject">邮件标题</param>
/// <param name="body">邮件正文</param>
/// <param name="file">附件地址数组</param>
/// <returns>bool 是否成功 </returns>
public bool Send(string from, string sender, string to, string subject, string body, params string[] file)
{
return Send(from, sender, new string[] { to }, subject, body, file);
} /// <summary>
/// 发送邮件
/// </summary>
/// <param name="from">发件人邮件地址</param>
/// <param name="sender">发件人显示名称</param>
/// <param name="to">收件人地址</param>
/// <param name="subject">邮件标题</param>
/// <param name="body">邮件正文</param>
/// <param name="file">附件地址数组</param>
/// <returns>bool 是否成功 </returns>
public bool Send(string from, string sender, string[] to, string subject, string body, params string[] file)
{
string mailReg = @"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$";
if (to == null)
{
throw new ArgumentNullException("MailSmtp.Send.to");
} if (to.Any(oit => !Regex.IsMatch(oit + "", mailReg)))
{
this.Result = "收件人地址不合法";
return false;
}
if (_bcc != null && _bcc.Length > )
{
if (_bcc.Any(oit => !Regex.IsMatch(oit + "", mailReg)))
{
this.Result = "暗送人地址不合法";
return false;
}
}
if (_cc != null && _cc.Length > )
{
if (_cc.Any(oit => !Regex.IsMatch(oit + "", mailReg)))
{
this.Result = "抄送人地址不合法";
return false;
}
}
MailMessage message = new MailMessage(); // 创建一个附件对象
foreach (var r in file)
{
Attachment objMailAttachment;
objMailAttachment = new Attachment(r);//发送邮件的附件
message.Attachments.Add(objMailAttachment);
}
message.From = new MailAddress(from, sender);
message.Subject = subject;
message.SubjectEncoding = this._encoding;
message.Body = body;
message.BodyEncoding = this._encoding;
message.IsBodyHtml = this._isHtml;
message.Priority = MailPriority.Normal;
foreach (string str in to)
{
message.To.Add(str);
}
if (this._bcc != null && this._bcc.Length > )
{
foreach (string b in this._bcc)
{
message.Bcc.Add(b);
}
}
if (this._cc != null && this._cc.Length > )
{
foreach (string c in this._cc)
{
message.CC.Add(c);
}
} try
{
this._smtp.Send(message);
return true;
}
catch (Exception ex)
{ Console.WriteLine(ex.Message);
} return false;
} private SmtpClient _smtp = new SmtpClient();
private Encoding _encoding { get; set; }
private bool _isHtml { get; set; }
private string[] _cc { get; set; }
private string[] _bcc { get; set; }
/// <summary>
/// 获取发送结果,成功则为空
/// </summary>
public string Result { get; private set; }
} }

Mail发送封装类的更多相关文章

  1. 解决java mail发送TXT附件被直接显示在正文中的问题

    这两天遇到一个问题,关于使用java mail发送邮件的问题. 详细是这样子的:我使用java mail发送异常报告邮件,邮件中有一个包含异常日志的附件,和关于设备信息的邮件正文.假设日志为log后缀 ...

  2. linux使用mail发送外部smtp邮件

    linux使用mail发送外部smtp邮件 第一章 说明 参考资料: http://coolnull.com/2614.html linux自带的mail可以实现外部smtp发邮件.不需要本地配置po ...

  3. 邮箱mail 发送类 ASP.NET C#

    没有牛B的设计模式,代码精练精练实用,功能齐全,调用简单 ..全全完完为码农考虑 MailSmtp ms = new MailSmtp("smtp.qq.com","12 ...

  4. Java Mail发送简单邮件,完整代码

    依赖javax.mail.jar,地址:https://java.net/projects/javamail/pages/Home 完整示例代码如下: package com.jadic.utils; ...

  5. linux通过使用mail发送电子邮件

    通过外部方法发送的电子邮件 bin/mail默认为本地sendmail发送电子邮件,求本地的机器必须安装和启动Sendmail服务.配置很麻烦,并且会带来不必要的 资源占用.而通过改动配置文件能够使用 ...

  6. mail 发送email

    (一)首先安装ssmpt和mailutils: sudo apt-get install ssmtp mailutils (二)接下来编辑配置文件sudo gedit /etc/ssmtp/ssmtp ...

  7. [Zend Mail]发送中文名附件出现乱码解决方案

    Zend Framework 1.0.* “=?UTF-8?B?”.base64_encode($title).“?=” 发送中文名附件,结果如图: 英文名附件,结果截图: 解决办法就是将中文文件名拼 ...

  8. java之mail发送

    一.邮箱的应用在实际的Java开发过程中,也是非常常见的.我这里就是写了一个简单的邮箱发送功能. 二.邮箱的基本配置,使用的是JavaMailSender的提供的方式来实现邮件的发送 1)qq邮箱的配 ...

  9. System.net.mail发送电子邮件

    之前做的实现发送邮件的功能,基于System.net.mail,在本地测试是可以发送邮件的,发布到服务器上发送不了邮件,后来发现STMP默认使用25端口收发邮件,服务器封掉25了端口,导致发送邮件失败 ...

随机推荐

  1. JavaScript Array 整理 - 元素操作

    整理一下Array对象中针对元素操作的方法. 分别是: concat (组合数组) join(数组转字符串) pop(删除最后一个元素) shift(删除第一个元素) push(在数组尾部添加新元素) ...

  2. 经典实用SQL Server语句大全总结(一)

    简要介绍基础语句:1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创 ...

  3. CXF-JAX-RS开发(二)spring整合CXF-JAX-RS

    一.创建maven工程[Packaging:war] 1.目录结构 2.坐标书写 二.导入依赖和tomcat服务器插件 <dependencies> <!-- CXF --> ...

  4. 时序分析:串匹配-KMP算法

    图像处理与模式识别的教科书使用大量的章节来描述空域的模式识别方法.从图像底层特征提取.贝叶斯方法到多层神经网络方法,一般不讨论到对象随时间变化的情况,视频处理应用和在线学习方法使研究对象开始向时域延伸 ...

  5. [Intermediate Algorithm] - Binary Agents

    题目 传入二进制字符串,翻译成英语句子并返回. 二进制字符串是以空格分隔的. 提示 String.charCodeAt() String.fromCharCode() 测试用例 binaryAgent ...

  6. apicloud 第三方登录授权、微信、扣扣、微博登录授权

    授权登录.接入第三方的配置 例如:微信的登录授权. 首先在模块里面添加 wx 这个模块,然后在项目的配置文件里面进行配置. 配置的时候要现在微信开放平台 https://open.weixin.qq. ...

  7. 记录:Ubuntu下安装SQL Developer

    安装JDK. 用的Ubuntu18.04,已经自带JDK了. 下载SQL Developer. 官网链接:http://www.oracle.com/technetwork/developer-too ...

  8. 504 Gateway Timeout 异常

    生产销售系统出现 504 Gateway Timeout 异常,其实就是服务器响应太慢导致nginx带来超时,先不说服务端慢的优化问题:只是单纯的解决504.到网上发现了一篇文章fix it Add ...

  9. 在oracle中将某个字段的数据作为列名的查询

    原表结构 查询语句: select sno,sname,sum(语文) 语文,sum(数学) 数学,sum(英语) 英语 from (select sno,sname,decode(subjiect, ...

  10. Emacs学习笔记之主模式笔记

    % 模式相关—————————————————————————— 这里经常用的也就各种语言相对应的模式,有些就没再写进去,比如f90等模式 Fundamental mode 基本模式         ...