net2.0后,C#可以利用System.Net發送郵件了。
代碼整理如下:
1 /************************************** 2 * <copyright file="SendEail.cs"> 3 * Copyright(c)2014 LeeStudio All rights reserved. 4 * CLR版本:4.0.30319.17929 5 * 開發團隊:欺心伴月個人工作室 6 * 技術博客:http://m.survivalescaperooms.com/lichunyang/ 7 * 所屬工程:LeeStudio.Basic 8 * 創 建 者:Frank Lee 9 * 修改時間:2014-02-20 11:20 10 * </copyright> 11 **************************************/ 12 13 using System; 14 using System.Text; 15 using System.Net; 16 using System.Net.Mail; 17 using System.Net.Mime; 18 19 namespace LeeStudio.Basic 20 { 21 /// <summary> 22 /// 郵件發送類 23 /// </summary> 24 public class SendEmail 25 { 26 PRivate MailMessage mailMessage = new MailMessage(); //實例化一個郵件類 27 28 #region 構造函數 29 /// <summary> 30 /// 構造函數 31 /// </summary> 32 /// <param name="toAddresses">收件人地址(多個以,號分開)</param> 33 /// <param name="fromAddress">發件人地址</param> 34 /// <param name="title">主題</param> 35 /// <param name="body">正文</param> 36 public SendEmail(string toAddresses, string fromAddress, string title, string body) 37 : this(toAddresses, fromAddress, "", "", title, body, false) 38 { 39 } 40 41 /// <summary> 42 /// 構造函數 43 /// </summary> 44 /// <param name="toAddress">收件人地址</param> 45 /// <param name="fromAddress">發件人地址</param> 46 /// <param name="toName">收件人名字</param> 47 /// <param name="fromName">發件人姓名</param> 48 /// <param name="title">主題</param> 49 /// <param name="body">正文</param> 50 /// <param name="isBodyHtml">正文是否為html格式</param> 51 public SendEmail(string toAddress, string fromAddress, string toName, string fromName, string title, string body, bool isBodyHtml) 52 { 53 mailMessage.From = new MailAddress(fromAddress, fromName, Encoding.GetEncoding(936)); 54 if (toName.Equals("")) 55 mailMessage.To.Add(toAddress); 56 else 57 mailMessage.To.Add(new MailAddress(toAddress, toName, Encoding.GetEncoding(936))); 58 59 mailMessage.Subject = title; 60 mailMessage.SubjectEncoding = Encoding.GetEncoding(936); 61 62 mailMessage.Body = body; 63 mailMessage.IsBodyHtml = isBodyHtml; 64 mailMessage.BodyEncoding = Encoding.GetEncoding(936); 65 } 66 #endregion 67 68 /// <summary> 69 /// 設置SMTP,并且將郵件發送出去 70 /// 所有參數都設置完成后再調用該方法 71 /// </summary> 72 /// <param name="passWord">發件人密碼</param> 73 /// <param name="smtpHost">SMTP服務器地址</param> 74 public void SetSmtp(string password, string smtpHost) 75 { 76 SetSmtp(mailMessage.From.Address, password, smtpHost, 25, false, MailPriority.Normal); 77 } 78 79 /// <summary> 80 /// 設置SMTP,并且將郵件發送出去 81 /// 所有參數都設置完成后再調用該方法 82 /// </summary> 83 /// <param name="address">發件人地址(必須為真實有效的email地址)</param> 84 /// <param name="password">發件人密碼</param> 85 /// <param name="smtpHost">SMTP服務器地址</param> 86 /// <param name="smtpPort">SMTP服務器的端口</param> 87 /// <param name="isEnableSsl">SMTP服務器是否啟用SSL加密</param> 88 /// <param name="priority">郵件的優先級</param> 89 public void SetSmtp(string address, string password, string smtpHost, int smtpPort, bool isEnableSsl, MailPriority priority) 90 { 91 SmtpClient smtp = new SmtpClient(); 92 smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 93 smtp.Credentials = new NetworkCredential(address, password); 94 smtp.Host = smtpHost; 95 smtp.Port = smtpPort; 96 smtp.EnableSsl = isEnableSsl; 97 98 mailMessage.Priority = priority; 99 smtp.Send(mailMessage); //發送郵件100 }101 102 #region //設置郵件地址103 /// <summary>104 /// 設置更多收件人105 /// </summary>106 /// <param name="toAddresses">收件人地址</param>107 public void SetMoreToAddress(string toAddresses)108 {109 mailMessage.To.Add(toAddresses);110 }111 112 /// <summary>113 /// 設置更多收件人114 /// </summary>115 /// <param name="toAddresses">收件人地址</param>116 /// <param name="toName">收件人名字</param>117 public void SetMoreToAddress(string toAddress, string toName)118 {119 mailMessage.To.Add(new MailAddress(toAddress, toName, Encoding.GetEncoding(936)));120 }121 122 /// <summary>123 /// 設置抄送者(多個以,號分開)124 /// </summary>125 /// <param name="ccAddresses">抄送者地址</param>126 public void SetCarbonCopyFor(string ccAddresses)127 {128 mailMessage.CC.Add(ccAddresses);129 }130 131 /// <summary>132 /// 設置抄送者133 /// </summary>134 /// <param name="ccAddress">抄送者地址</param>135 /// <param name="ccName">抄送者名字</param>136 public void SetCarbonCopyFor(string ccAddress, string ccName)137 {138 mailMessage.Bcc.Add(new MailAddress(ccAddress, ccName, Encoding.GetEncoding(936)));139 }140 141 /// <summary>142 /// 設置密送者(多個以,號分開)143 /// </summary>144 /// <param name="bccAddresses">密送者</param>145 public void SetBlindCarbonCopyFor(string bccAddresses)146 {147 mailMessage.Bcc.Add(bccAddresses);148 }149 150 /// <summary>151 /// 設置密送者152 /// </summary>153 /// <param name="bccAddress">密送者</param>154 /// <param name="bccName">密送者名字</param>155 public void SetBlindCarbonCopyFor(string bccAddress, string bccName)156 {157 mailMessage.Bcc.Add(new MailAddress(bccAddress, bccName, Encoding.GetEncoding(936)));158 }159 #endregion160 161 #region 添加附件162 /// <summary>163 /// 添加附件(自動識別文件類型)164 /// </summary>165 /// <param name="fileName">單個文件的路徑</param>166 public void Attachments(string fileName)167 {168 mailMessage.Attachments.Add(new Attachment(fileName));169 }170 171 /// <summary>172 /// 添加附件(默認為富文本RTF格式)173 /// </summary>174 /// <param name="fileName">單個文件的路徑</param>175 public void AttachmentsForRTF(string fileName)176 {177 mailMessage.Attachments.Add(new Attachment(fileName, MediaTypeNames.application.Rtf));178 }179 #endregion180 }181 }調用是按照需求,自由設置參數。
1 using LeeStudio.Basic; 2 3 private void SendEmail() 4 { 5 #region 最簡設置 6 //SendEmail se = new SendEmail("*****@****.com", "****@163.com", "title", "body"); 7 //se.SetSmtp("password", "smtp.163.com"); //必須在所有參數設置完后調用此方法 8 #endregion 9 10 #region 完全設置11 //string toAddresses = "***@**.**,***@**.**";12 //string toNames = "frank,lee";13 14 //SendEmail se = new SendEmail("to@**.**", "from@**.**", "toname", "fromname","title", "body", false);15 //se.SetMoreToAddress("to@**.**", "toName");16 //se.SetCarbonCopyFor("cc@**.**");17 //se.SetBlindCarbonCopyFor("bcc@**.**");18 19 //string filePath = Request.PhysicalApplicationPath + "/file/SendEmail.txt";20 //se.Attachments(filePath);21 //filePath = Request.PhysicalApplicationPath + "/file/RTF文件.docx";22 //se.AttachmentsForRTF(filePath);23 //se.SetSmtp("email", "password", "smtp", 25, true, System.
新聞熱點
疑難解答