代码实现:

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. akka框架——异步非阻塞高并发处理框架

    akka actor, akka cluster akka是一系列框架,包括akka-actor, akka-remote, akka-cluster, akka-stream等,分别具有高并发处理模 ...

  2. 【Oracle】to_char技巧

    Select to_char(sysdate,'ss') from dual;      取当前时间秒部分 Select to_char(sysdate,'mi') from dual;      取 ...

  3. 怎样批量删除PDF文件中的注释

    日常我们在阅读一些PDF文章时候,我们会发现有些PDF文章带有非常多的注释,显得非常不美观,影响了阅读体验.那么PDF文章里的批注应该怎么进行删除呢?怎样批量删除PDF文件中的注释?   操作教程: ...

  4. linux下怎么退出telnet

    在运维过程中,常常会telnet某个ip端口,如果 能telnet通,怎么退出呢 ? 1.telnet 63.172.25.18 6463 回车 Trying 63.172.25.18... Conn ...

  5. snv报错

    ERROR svn: E160028: Commit failed svn出现上面错误,先更新再提交即可解决.

  6. localStorage、sessionStorage、cookie

    vue下的全局变量和vuex里的state都是临时变量,页面刷新就都没了.

  7. Nginx服务器部署SSL证书手机不信任解决方法

    在wosign申请证书并按指南正确部署证书后,如果发现PC浏览器访问正常,手机或safari浏览器提示证书不受信任,那肯定是在文件传输解压过程中导致证书文件中出现空格.乱码之类的情况,这里教您轻松四步 ...

  8. python mysql连接池

    话不多说,直接撸代码 # coding=utf-8 from DBUtils.PooledDB import PooledDB import pymysql as mysql import trace ...

  9. 【剑指Offer】58、对称的二叉树

      题目描述:   请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的.   解题思路:   本题判断一棵树是不是对称的,和第18题可以对比分 ...

  10. 【剑指Offer】56、删除链表中重复的结点

      题目描述:   在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4-> ...