zoukankan      html  css  js  c++  java
  • .Net Email操作类

      1 using System;
      2 using System.Text;
      3 using System.Net.Mail;
      4 using System.Net;
      5 using System.Linq;
      6 using System.Text.RegularExpressions;
      7 
      8 namespace Dos.ORM.Common.Helpers
      9 {
     10     /// <summary>
     11     /// 发送邮件帮助类
     12     /// </summary>
     13     public class EmailHelper
     14     {
     15 
     16         private readonly SmtpClient _smtp = new SmtpClient();
     17         private Encoding Encoding { get; set; }
     18         private bool IsHtml { get; set; }
     19         private string[] Cc { get; set; }
     20         private string[] Bcc { get; set; }
     21 
     22         /// <summary>
     23         /// 是否为腾讯企业邮箱
     24         /// </summary>
     25         private readonly bool _isExmailQq;
     26 
     27         /// <summary>
     28         /// 发件邮箱密码或授权码
     29         /// </summary>
     30         private string Password { get; set; }
     31 
     32         /// <summary>
     33         /// 获取发送结果,成功则为空
     34         /// </summary>
     35         public string Result { get; private set; }
     36 
     37         /// <summary>
     38         /// 设置邮件编码类型
     39         /// </summary>
     40         /// <param name="contentEncoding"></param>
     41         public void SetEncoding(Encoding contentEncoding)
     42         {
     43             Encoding = contentEncoding;
     44 
     45         }
     46         /// <summary>
     47         ///设置邮件正文是否为 Html 格式 
     48         /// </summary>
     49         /// <param name="isHtml"></param>
     50         public void SetIsHtml(bool isHtml)
     51         {
     52             IsHtml = isHtml;
     53         }
     54         /// <summary>
     55         /// 抄送
     56         /// </summary>
     57         /// <param name="cc"></param>
     58         public void SetCc(params string[] cc)
     59         {
     60             Cc = cc;
     61         }
     62 
     63         /// <summary>
     64         /// 暗送
     65         /// </summary>
     66         /// <param name="bc"></param>
     67         public void SetBc(params string[] bc)
     68         {
     69             Bcc = bc;
     70         }
     71         /// <summary>
     72         /// 是否ssl加密
     73         /// </summary>
     74         /// <param name="isSsl"></param>
     75         public void SetIsSsl(bool isSsl)
     76         {
     77             _smtp.EnableSsl = isSsl;
     78         }
     79 
     80         /// <summary>
     81         /// 构造函数
     82         /// </summary>
     83         /// <param name="host">SMTP事务的主机的名称或IP地址</param>
     84         /// <param name="sendUserAccName">发件人邮件账号名称(不包含@及后缀)</param>
     85         /// <param name="sendUserPwd">发件人邮箱密码</param>
     86         /// <param name="isExmailQq">是否为腾讯企业邮箱</param>
     87         /// <param name="port">端口号,默认为25</param>
     88         public EmailHelper(string host, string sendUserAccName, string sendUserPwd, bool isExmailQq = false, int port = 25)
     89         {
     90             _smtp.Host = host;
     91             Password = sendUserPwd;
     92             _isExmailQq = isExmailQq;
     93             _smtp.Port = port != 25 ? port : 0x19;
     94             _smtp.EnableSsl = false;
     95 
     96             IsHtml = true;
     97             Encoding = Encoding.UTF8;
     98 
     99             if (string.IsNullOrEmpty(sendUserAccName) || string.IsNullOrEmpty(sendUserPwd))
    100             {
    101                 _smtp.UseDefaultCredentials = false;
    102             }
    103             else
    104             {
    105                 _smtp.Credentials = new NetworkCredential(sendUserAccName, sendUserPwd);
    106             }
    107         }
    108 
    109         /// <summary>
    110         /// 发送邮件
    111         /// </summary>
    112         /// <param name="fromAcc">发件人邮件地址</param>
    113         /// <param name="fromUserNickname">发件人显示名称</param>
    114         /// <param name="toUserAcc">收件人地址</param>
    115         /// <param name="title">邮件标题</param>
    116         /// <param name="body">邮件正文</param>
    117         /// <param name="file">附件地址数组</param>
    118         /// <returns>bool 是否成功 </returns>
    119         public bool Send(string fromAcc, string fromUserNickname, string toUserAcc, string title, string body, params string[] file)
    120         {
    121             return Send(fromAcc, fromUserNickname, new string[] { toUserAcc }, title, body, file);
    122         }
    123 
    124         /// <summary>
    125         /// 发送邮件
    126         /// </summary>
    127         /// <param name="fromAcc">发件人邮件地址</param>
    128         /// <param name="fromUserNickname">发件人显示名称</param>
    129         /// <param name="toUserAcc">收件人地址</param>
    130         /// <param name="title">邮件标题</param>
    131         /// <param name="body">邮件正文</param>
    132         /// <param name="file">附件地址数组</param>
    133         /// <returns>bool 是否成功 </returns>
    134         public bool Send(string fromAcc, string fromUserNickname, string[] toUserAcc, string title, string body, params string[] file)
    135         {
    136             string mailReg = @"^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$";
    137             if (toUserAcc == null)
    138             {
    139                 throw new ArgumentNullException("EmailHelper.Send.to");
    140             }
    141 
    142             if (toUserAcc.Any(oit => !Regex.IsMatch(oit + "", mailReg)))
    143             {
    144                 Result = "收件人地址不合法";
    145                 return false;
    146             }
    147             if (Bcc != null && Bcc.Length > 0)
    148             {
    149                 if (Bcc.Any(oit => !Regex.IsMatch(oit + "", mailReg)))
    150                 {
    151                     Result = "暗送人地址不合法";
    152                     return false;
    153                 }
    154             }
    155             if (Cc != null && Cc.Length > 0)
    156             {
    157                 if (Cc.Any(oit => !Regex.IsMatch(oit + "", mailReg)))
    158                 {
    159                     Result = "抄送人地址不合法";
    160                     return false;
    161                 }
    162             }
    163 
    164             if (_isExmailQq)
    165             {
    166                 #region 检查是否为腾讯企业邮箱(注意这里有一个坑,腾旭企业邮箱需要单独进行以下设置)
    167                 //此坑可参见:https://www.cnblogs.com/gxivwshjj/p/7562311.html
    168 
    169                 var mail = new System.Web.Mail.MailMessage();
    170                 try
    171                 {
    172                     mail.To = string.Join(";", toUserAcc);
    173                     mail.From = fromAcc;
    174                     mail.Subject = title;
    175                     mail.BodyFormat = System.Web.Mail.MailFormat.Html;
    176                     mail.Body = body;
    177 
    178                     //设置基础身份验证为1
    179                     mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
    180                     //设置发件邮箱地址
    181                     mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", fromAcc);
    182                     //设置发件邮箱密码
    183                     mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", Password);
    184                     //设置端口号为465
    185                     mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 465);
    186                     //设置SSL为true
    187                     mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
    188 
    189                     //发送邮件的附件
    190                     foreach (var r in file)
    191                     {
    192                         var objMailAttachment = new Attachment(r);
    193                         mail.Attachments.Add(objMailAttachment);
    194                     }
    195 
    196                     System.Web.Mail.SmtpMail.SmtpServer = _smtp.Host;
    197                     System.Web.Mail.SmtpMail.Send(mail);
    198 
    199                     return true;
    200                 }
    201                 catch (Exception ex)
    202                 {
    203                     Result = ex.Message;
    204                 }
    205 
    206                 #endregion
    207             }
    208             else
    209             {
    210                 MailMessage message = new MailMessage();
    211 
    212                 //创建一个附件对象
    213                 foreach (var r in file)
    214                 {
    215                     //发送邮件的附件
    216                     var objMailAttachment = new Attachment(r);
    217                     message.Attachments.Add(objMailAttachment);
    218                 }
    219                 message.From = new MailAddress(fromAcc, fromUserNickname);
    220                 message.Subject = title;
    221                 message.SubjectEncoding = Encoding;
    222                 message.Body = body;
    223                 message.BodyEncoding = Encoding;
    224                 message.IsBodyHtml = IsHtml;
    225                 message.Priority = MailPriority.Normal;
    226                 foreach (string str in toUserAcc)
    227                 {
    228                     message.To.Add(str);
    229                 }
    230                 if (Bcc != null && Bcc.Length > 0)
    231                 {
    232                     foreach (string b in Bcc)
    233                     {
    234                         message.Bcc.Add(b);
    235                     }
    236                 }
    237                 if (Cc != null && Cc.Length > 0)
    238                 {
    239                     foreach (string c in Cc)
    240                     {
    241                         message.CC.Add(c);
    242                     }
    243                 }
    244 
    245                 try
    246                 {
    247                     _smtp.Send(message);
    248                     return true;
    249                 }
    250                 catch (Exception ex)
    251                 {
    252                     Result = ex.Message;
    253                 }
    254             }
    255 
    256             return false;
    257         }
    258     }
    259 }
  • 相关阅读:
    Array的个人总结
    sublime3 的安装
    小白 安装和配置Tomcat 局域网内访问网页
    安装Axure7.0,完整教程,有验证码和汉化包
    安装 sublime2 (包括插件)
    ffmpeg
    ExecutorService
    artDialog
    交互
    刚查了,Z3795不支持EPT,即WP8开发必须的SLAT,看来只能作为简单的WINDOWS备机了
  • 原文地址:https://www.cnblogs.com/qubernet/p/8058620.html
Copyright © 2011-2022 走看看