C#简单邮件发送
2012-06-28 11:04 杭伟 阅读(303) 评论(0) 编辑 收藏 举报写了一个通用方法,支持公司内部邮件服务器和使用SMTP服务商的邮件服务器。
Common.cs
View Code
using System; using System.Collections.Generic; using System.Text; using System.Net.Mail; //引入Mail命名空間 namespace WebMailTest { /// <summary> /// C#郵件發送 /// Author:www.cnblogs.com/hangwei /// </summary> public class Common { /// <summary> /// 發送郵件的方法 /// </summary> /// <param name="inCompany">郵件服務器是否在公司內部</param> /// <param name="account">郵件帳號,若為公司內部服務器,可不填</param> /// <param name="pwd">郵件密碼,若為公司內部服務器,可不填</param> /// <param name="host">主機地址(SMTP地址)</param> /// <param name="port">端口</param> /// <param name="address">發件人地址</param> /// <param name="displayname">發件人顯示名稱</param> /// <param name="subject">郵件主旨</param> /// <param name="filepath">附件</param> /// <param name="toEmail">收件人</param> /// <param name="ccEmail">副本收件人</param> /// <param name="bccEmail">秘密副本收件人</param> /// <param name="body">郵件內容(HTML格式)</param> /// <returns>異常信息反饋,沒有則返回空值</returns> public static string SendMail(bool inCompany, string account, string pwd, string host, int port, string address, string displayname, string subject, string filepath, string toEmail, string ccEmail, string bccEmail, string body) { string errMsg = "";//錯誤返回信息 //設置SmtpClient對象信息 SmtpClient sClient = new SmtpClient(host, port);//創建SmtpClient對象 if (inCompany == true) sClient.UseDefaultCredentials = true;//使用默認驗證 else sClient.Credentials = new System.Net.NetworkCredential(account, pwd);//使用郵箱帳號和密碼進行驗證 sClient.DeliveryMethod = SmtpDeliveryMethod.Network;//電子郵件是透過網絡傳送到SMTP伺服器 MailMessage mmsg = new MailMessage(); mmsg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess; mmsg.From = new MailAddress(address, displayname);//指定發件人的郵件地址和顯示名稱 mmsg.Priority = MailPriority.High;//郵件的優先級 //郵件內容部分 mmsg.SubjectEncoding = Encoding.UTF8;//郵件主旨編碼 mmsg.Subject = subject;//郵件主旨 if (filepath != "")//如果文件路徑不為空,則添加附件信息 mmsg.Attachments.Add(new Attachment(filepath)); //收件人信息 //對郵件地址進行處理 if (toEmail.Contains(";"))//如果郵件地址包含分號 { string[] toAdrs = toEmail.Split(";".ToCharArray()); foreach (string toAdr in toAdrs) { mmsg.To.Add(toAdr); } } else mmsg.To.Add(toEmail); //副本收件人信息 if (ccEmail != "") { if (ccEmail.Contains(";")) { string[] ccAdrs = ccEmail.Split(";".ToCharArray()); foreach (string ccAdr in ccAdrs) { mmsg.CC.Add(ccAdr); } } else mmsg.CC.Add(ccEmail); } //秘密副本收件人信息 if (bccEmail != "") { if (bccEmail.Contains(";")) { string[] bccAdrs = bccEmail.Split(";".ToCharArray()); foreach (string bccAdr in bccAdrs) { mmsg.Bcc.Add(bccAdr); } } else mmsg.Bcc.Add(bccEmail); } //郵件內容 mmsg.IsBodyHtml = true; //支持HTML格式 mmsg.BodyEncoding = Encoding.UTF8;//UTF8編碼 mmsg.Body = body; //郵件內容 try { sClient.Send(mmsg); } catch (Exception ex) { errMsg = ex.Message + " | " + ex.InnerException; } return errMsg; } } }
调用
View Code
//使用公司內部服務器 protected void Button1_Click(object sender, EventArgs e) { string sError = Common.SendMail(true, "", "", "10.9.1.1", 25, "your company email host address", "XX部xx組", "功能測試", "", "123@sina.com", "", "", "Welcome!"); if (sError == "") ClientScript.RegisterStartupScript(this.GetType(), "tips1", "alert('發送成功!');", true); } //使用網易126郵件服務器 protected void Button2_Click(object sender, EventArgs e) { string sError = Common.SendMail(false, "xxx@126.com", "your password", "smtp.126.com", 25, "xxx@126.com", "xxx的網易郵箱", "網易郵件主旨", "", "abc@163.com;bcd@qq.com", "", "", "網易歡迎你!"); if (sError == "") ClientScript.RegisterStartupScript(this.GetType(), "tips2", "alert('發送成功!');", true); }
功能比较简单,介绍了.NET System.Net.Mail 最基本的使用。
程序功能已在本机通过测试。
作者:hangwei
出处:http://www.cnblogs.com/hangwei/
关于作者:专注于开源平台,分布式系统的架构设计与开发、数据库性能调优等工作。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
如果您觉得文章对您有帮助,可以点击文章右下角“推荐”一下。您的鼓励是作者坚持原创和持续写作的最大动力!