using System; using System.Collections.Generic; using System.Text; using System.Configuration; using System.IO; using System.Web; using System.Net.Mai... ...
using System; using System.Collections.Generic; using System.Text; using System.Configuration; using System.IO; using System.Web; using System.Net.Mail; using System.Net; using System.ComponentModel; namespace EasyFrame.Common { public class GTMail { #region 發送電子郵件 /// <summary> /// 發送電子郵件 /// </summary> /// <param name="smtpserver">SMTP伺服器</param> /// <param name="userName">登錄帳號</param> /// <param name="pwd">登錄密碼</param> /// <param name="nickName">發件人昵稱</param> /// <param name="strfrom">發件人</param> /// <param name="strto">收件人</param> /// <param name="subj">主題</param> /// <param name="bodys">內容</param> public static void sendMail(string smtpserver, string userName, string pwd, string nickName, string strfrom, string strto, string subj, string bodys) { SmtpClient _smtpClient = new SmtpClient(); _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定電子郵件發送方式 _smtpClient.Host = smtpserver;//指定SMTP伺服器 _smtpClient.Credentials = new System.Net.NetworkCredential(userName, pwd);//用戶名和密碼 //MailMessage _mailMessage = new MailMessage(strfrom, strto); MailAddress _from = new MailAddress(strfrom, nickName); MailAddress _to = new MailAddress(strto); MailMessage _mailMessage = new MailMessage(_from, _to); _mailMessage.Subject = subj;//主題 _mailMessage.Body = bodys;//內容 _mailMessage.BodyEncoding = System.Text.Encoding.Default;//正文編碼 _mailMessage.IsBodyHtml = true;//設置為HTML格式 _mailMessage.Priority = MailPriority.Normal;//優先順序 _smtpClient.Send(_mailMessage); } #endregion #region 簡單電子郵件發送 /// <summary> /// 簡單電子郵件發送 /// </summary> /// <param name="smtpserver">SMTP伺服器</param> /// <param name="userName">登錄帳號</param> /// <param name="pwd">登錄密碼</param> /// <param name="nickName">發件人昵稱</param> /// <param name="mailFrom">發件人</param> /// <param name="mailTo">收件人</param> /// <param name="subj">主題</param> /// <param name="bodys">內容</param> public static void sendMail(string smtpserver, int smtpport, string userName, string pwd, string nickName, string mailFrom, string mailTo, string subj, string bodys) { SmtpClient _smtpClient = new SmtpClient(); _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定電子郵件發送方式 _smtpClient.Host = smtpserver;//指定SMTP伺服器 _smtpClient.Port = smtpport; _smtpClient.EnableSsl = true; //_smtpClient.SendCompleted += new SendCompletedEventHandler(Smtp_SendCompleted); _smtpClient.Credentials = new NetworkCredential(userName, pwd);//用戶名和密碼 MailAddress _from = new MailAddress(mailFrom, nickName, Encoding.GetEncoding(936)); MailAddress _to = new MailAddress(mailTo); MailMessage _mailMessage = new MailMessage(_from, _to); _mailMessage.Subject = subj;//主題 _mailMessage.Body = bodys;//內容 _mailMessage.BodyEncoding = Encoding.Default;//正文編碼 _mailMessage.IsBodyHtml = true;//設置為HTML格式 _mailMessage.Priority = MailPriority.Normal;//優先順序 _smtpClient.Send(_mailMessage); //_smtpClient.SendMailAsync(_mailMessage); } private static void Smtp_SendCompleted(object sender, AsyncCompletedEventArgs e) { string msg = e.UserState.ToString(); SmtpClient smtp = (SmtpClient)sender; if (e.Error == null)//問題出現後,這裡的Error並沒有錯誤 { msg += ",1";//發送成功 } else { msg += ",0"; smtp.SendAsyncCancel(); } } #endregion #region 郵件批量發送 /// <summary> /// 郵件批量發送 /// </summary> /// <param name="smtpserver"></param> /// <param name="smtpport"></param> /// <param name="userName"></param> /// <param name="pwd"></param> /// <param name="mailFrom"></param> /// <param name="nickName"></param> /// <param name="mailTo"></param> /// <param name="subj"></param> /// <param name="bodys"></param> /// <param name="cc"></param> /// <param name="bcc"></param> /// <param name="mailAttachments"></param> public static void SendMail(string smtpserver, int smtpport, string userName, string pwd, string mailFrom, string nickName, string[] mailTo, string subj, string bodys, string[] cc, string[] bcc, string[] mailAttachments) { SmtpClient smtp = new SmtpClient(); //實例化一個SmtpClient smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //將smtp的出站方式設為 Network smtp.EnableSsl = false;//smtp伺服器是否啟用SSL加密 smtp.Host = smtpserver; //指定 smtp 伺服器地址 smtp.Port = smtpport; //指定 smtp 伺服器的埠,預設是25,如果採用預設埠,可省去 //如果你的SMTP伺服器不需要身份認證,則使用下麵的方式,不過,目前基本沒有不需要認證的了 smtp.UseDefaultCredentials = true; //smtp.SendCompleted += new SendCompletedEventHandler(Smtp_SendCompleted); //如果需要認證,則用下麵的方式 smtp.Credentials = new NetworkCredential(userName, pwd); MailMessage mm = new MailMessage(); //實例化一個郵件類 mm.Priority = MailPriority.Normal; //郵件的優先順序,分為 Low, Normal, High,通常用 Normal即可 mm.From = new MailAddress(mailFrom, nickName, Encoding.GetEncoding(936)); //收件方看到的郵件來源; //第一個參數是發信人郵件地址 //第二參數是發信人顯示的名稱 //第三個參數是 第二個參數所使用的編碼,如果指定不正確,則對方收到後顯示亂碼 //936是簡體中文的codepage值 //註:上面的郵件來源,一定要和你登錄郵箱的帳號一致,否則會認證失敗 mm.ReplyToList.Add(mailFrom); //ReplyTo 表示對方回覆郵件時預設的接收地址,即:你用一個郵箱發信,但卻用另一個來收信 if (cc.Length > 0) { mm.CC.Add(string.Join(",", cc));//抄送 } if (bcc.Length > 0) { mm.Bcc.Add(string.Join(",", bcc));//密送 } if (mailAttachments.Length > 0) { for (int i = 0; i < mailAttachments.Length; i++) { Attachment objMailAttachment = new Attachment(@mailAttachments[i]);//發送郵件的附件的地址 mm.Attachments.Add(objMailAttachment);//將附件附加到郵件消息對象中 } } mm.To.Add(string.Join(",", mailTo)); mm.Subject = subj; //郵件標題 mm.SubjectEncoding = Encoding.GetEncoding(936); // 這裡非常重要,如果你的郵件標題包含中文,這裡一定要指定,否則對方收到的極有可能是亂碼。 // 936是簡體中文的pagecode,如果是英文標題,這句可以忽略不用 mm.IsBodyHtml = true; //郵件正文是否是HTML格式 mm.BodyEncoding = Encoding.GetEncoding(936); //郵件正文的編碼, 設置不正確, 接收者會收到亂碼 mm.Body = bodys; //郵件正文 smtp.Send(mm); //smtp.SendMailAsync(mm); //發送郵件,如果不返回異常, 則大功告成了。 } #endregion } }