• 技术文章 >后端开发 >C#.Net教程

    C# 邮箱mail 发送类

    高洛峰高洛峰2017-01-16 09:44:47原创992
    没有牛B的设计模式,代码精练精练实用,功能齐全,调用简单 。。全全完完为码农考虑

    MailSmtp ms = new MailSmtp("smtp.qq.com","1215247044","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
      /// </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 > 0)
          {
            if (_bcc.Any(oit => !Regex.IsMatch(oit + "", mailReg)))
            {
              this.Result = "暗送人地址不合法";
              return false;
            }
          }
          if (_cc != null && _cc.Length > 0)
          {
            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 > 0)
          {
            foreach (string b in this._bcc)
            {
              message.Bcc.Add(b);
            }
          }
          if (this._cc != null && this._cc.Length > 0)
          {
            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; }
      }
      
    }

    以上所述就是本文的全部内容了,希望大家能够喜欢。

    更多C# 邮箱mail 发送类相关文章请关注PHP中文网!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:四个常用的.NET的SQLHELPER方法实例 下一篇:c#调用qq邮箱smtp发送邮件修改版代码
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• C语言入门之聊聊基础知识(数据类型、变量、函数、数组等)• c语言中node是什么意思• 聊聊如何利用纯C语言对EXCEL进行读写操作• C语言必背18个经典程序,C语言初学者必会(收藏)• asp.net中3种验证码示例(数字,数字字母混和,汉字)
    1/1

    PHP中文网