SMTP邮件发送
C#发送HTML格式邮件
支持邮件抄送
邮件密送
附件形式
using System; using System.Net; using System.Net.Configuration; using System.Net.Mail; using System.Text; using System.Web.Configuration; using System.Collections.Generic; namespace yunjsonHelper { /// <summary> /// Smtp配置 /// </summary> public class SmtpConfig { /// <summary> /// SMTP在web.config的默认配置 /// </summary> public SmtpConfig() { setWebConfigBindding(); ContentEncoding = Encoding.Default; } private void setWebConfigBindding() { try { MailSettingsSectionGroup sectionGroup = (MailSettingsSectionGroup)WebConfigurationManager.OpenWebConfiguration("~/").GetSectionGroup("system.net/mailSettings"); if (sectionGroup == null) { SmtpServer = "localhost"; Port = 25; SSLConnect = false; } else { if (sectionGroup.Smtp.Network.Host != "") { SmtpServer = sectionGroup.Smtp.Network.Host; } Port = sectionGroup.Smtp.Network.Port; UserName = sectionGroup.Smtp.Network.UserName; Password = sectionGroup.Smtp.Network.Password; if (sectionGroup.Smtp.Network.DefaultCredentials == true) { Credentials = null; } else { Credentials = new NetworkCredential(UserName, Password); } } } catch (Exception) { } } private string smtpServerField; /// <summary> /// 发送邮件服务器 /// </summary> public string SmtpServer { get { return smtpServerField; } set { smtpServerField = value; } } private int portField = 25; /// <summary> /// 服务器连接端口,默认为25。 /// </summary> public int Port { get { return portField; } set { portField = value; } } private string userNameField; /// <summary> /// 连接用户名 /// </summary> public string UserName { get { return userNameField; } set { userNameField = value; } } private string passwordField; /// <summary> /// 连接密码 /// </summary> public string Password { get { return passwordField; } set { passwordField = value; } } private bool sslConnectField = false; /// <summary> /// 是否是安全套接字连接,默认为否。 /// </summary> public bool SSLConnect { get { return sslConnectField; } set { sslConnectField = value; } } private Encoding contentEncodingField; /// <summary> /// 邮件内容编码 /// </summary> public Encoding ContentEncoding { get { return contentEncodingField; } set { contentEncodingField = value; } } private NetworkCredential credentialsField; /// <summary> /// 访问凭据 /// </summary> public NetworkCredential Credentials { get { return credentialsField; } set { credentialsField = value; } } } /// <summary> /// SMTP邮件发送 /// </summary> public class SmtpMail { /// <summary> /// 发送HTML格式邮件(UTF8) /// </summary> public static string MailTo(SmtpConfig config, MailAddress AddrFrom, MailAddress AddrTo, MailAddressCollection cc, MailAddressCollection bCC, string Subject, string BodyContent, bool isHtml, List<Attachment> attC) { MailMessage msg = new MailMessage(AddrFrom, AddrTo); #region 抄送 if (cc != null && cc.Count > 0) { foreach (MailAddress cAddr in cc) { msg.CC.Add(cAddr); } } #endregion #region 密送 if (bCC != null && bCC.Count > 0) { foreach (MailAddress cAddr in bCC) { msg.Bcc.Add(cAddr); } } #endregion #region 附件列表 if (attC != null && attC.Count > 0) { foreach (Attachment item in attC) { msg.Attachments.Add(item); } } #endregion msg.IsBodyHtml = isHtml; msg.Priority = MailPriority.High; msg.Subject = Subject; msg.SubjectEncoding = config.ContentEncoding; msg.BodyEncoding = config.ContentEncoding; msg.Body = BodyContent; SmtpClient client = new SmtpClient(config.SmtpServer, config.Port); if (config.Credentials != null) { client.Credentials = config.Credentials; } client.EnableSsl = config.SSLConnect; try { client.Send(msg); return "0"; } catch (Exception exp) { return exp.Message; } } /// <summary> /// 发送HTML格式邮件 /// </summary> /// <param name="config">SMTP配置</param> /// <param name="AddrFrom">发件人邮箱</param> /// <param name="AddrTo">收件人邮箱</param> /// <param name="Subject">主题</param> /// <param name="BodyContent">内容</param> /// <returns></returns> public static string MailTo(SmtpConfig config, MailAddress AddrFrom, MailAddress AddrTo, string Subject, string BodyContent) { return MailTo(config, AddrFrom, AddrTo, null, null, Subject, BodyContent, true, null); } } }