此類的功能包括發送郵件,郵箱格式是否正確,和在不發送郵件的情況下判斷郵箱用戶名和密碼是否正確,鑒於POP檢查郵箱用戶名和密碼出現錯誤情況返回結果的延遲,用異步線程解決此問題,見代碼
沒有牛B的設計模式,代碼精練精練實用,功能齊全,調用簡單 。。全全完完為碼農考慮
?
1 2 3 4 5 6 7 8 9 10 11 12 MailSmtp ms = new MailSmtp("smtp.qq.com","1215247044","xxxx"); //可選參數 ms.SetCC("[email protected]");//抄送可以多個 ms.SetBC("[email protected]");//暗送可以多個 ms.SetIsHtml(true);//默認:true ms.SetEncoding(System.Text.Encoding.UTF8);//設置格式 默認utf-8 ms.SetIsSSL(true);//是否ssl加密 默認為false //調用函數 bool isSuccess = ms.Send("[email protected]", "test", "[email protected]", "哈哈", "哈哈", Server.MapPath("~/Test.dll")); //輸出結果 Response.Write(ms.Result);代碼:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 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; } } }以上所述就是本文的全部內容了,希望大家能夠喜歡。