邮件发送在网站应用程序中经常会用到,包括您现在看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,做了一个客户端Demo,希望对有需要的童鞋有所帮助:
核心代码:
001 |
using System; |
002 |
using System.Net; |
003 |
using System.Net.Mail; |
004 |
using System.Text; |
005 |
006 |
namespace HC.Email |
007 |
{ |
008 |
/// <summary> |
009 |
/// 整站邮件服务类 |
010 |
/// </summary> |
011 |
public class EmailService |
012 |
{ |
013 |
/// <summary> |
014 |
/// 发送邮件 |
015 |
/// </summary> |
016 |
/// <param name="mailTo">收件人 |
017 |
/// <param name="subject">主题 |
018 |
/// <param name="body">内容 |
019 |
/// <returns></returns> |
020 |
public static bool Send( string mailTo, string subject, string body) |
021 |
{ |
022 |
return Send( new [] {mailTo}, null , subject, body, true , null ); |
023 |
} |
024 |
025 |
/// <summary> |
026 |
/// 发送邮件 |
027 |
/// </summary> |
028 |
/// <param name="mailTo">收件人 |
029 |
/// <param name="subject">主题 |
030 |
/// <param name="body">内容 |
031 |
/// <returns></returns> |
032 |
public static bool Send( string [] mailTo, string subject, string body) |
033 |
{ |
034 |
return Send(mailTo, null , subject, body, true , null ); |
035 |
} |
036 |
037 |
/// <summary> |
038 |
/// 发送邮件 |
039 |
/// </summary> |
040 |
/// <param name="mailTo">收件人 |
041 |
/// <param name="subject">主题 |
042 |
/// <param name="body">内容 |
043 |
/// <param name="attachmentsPath">附件 |
044 |
/// <returns></returns> |
045 |
public static bool Send( string [] mailTo, string subject, string body, string [] attachmentsPath) |
046 |
{ |
047 |
return Send(mailTo, null , subject, body, true , attachmentsPath); |
048 |
} |
049 |
050 |
051 |
/// <summary> |
052 |
/// 发送邮件 |
053 |
/// </summary> |
054 |
/// <param name="mailTo">收件人 |
055 |
/// <param name="mailCcArray">抄送 |
056 |
/// <param name="subject">主题 |
057 |
/// <param name="body">内容 |
058 |
/// <param name="isBodyHtml">是否Html |
059 |
/// <param name="attachmentsPath">附件 |
060 |
/// <returns></returns> |
061 |
public static bool Send( string [] mailTo, string [] mailCcArray, string subject, string body, bool isBodyHtml, |
062 |
string [] attachmentsPath) |
063 |
{ |
064 |
try |
065 |
{ |
066 |
var config = ConfigHelper.GetConfig<emailconfig>(); |
067 |
if ( string .IsNullOrEmpty(config.Host) || string .IsNullOrEmpty(config.UserName) || |
068 |
string .IsNullOrEmpty(config.Port) || string .IsNullOrEmpty(config.Password)) |
069 |
{ |
070 |
//todo:记录日志 |
071 |
return false ; |
072 |
} |
073 |
var @from = new MailAddress(config.MailFrom); //使用指定的邮件地址初始化MailAddress实例 |
074 |
var message = new MailMessage(); //初始化MailMessage实例 |
075 |
//向收件人地址集合添加邮件地址 |
076 |
if (mailTo != null ) |
077 |
{ |
078 |
foreach ( string t in mailTo) |
079 |
{ |
080 |
message.To.Add(t); |
081 |
} |
082 |
} |
083 |
084 |
//向抄送收件人地址集合添加邮件地址 |
085 |
if (mailCcArray != null ) |
086 |
{ |
087 |
foreach ( string t in mailCcArray) |
088 |
{ |
089 |
message.CC.Add(t); |
090 |
} |
091 |
} |
092 |
//发件人地址 |
093 |
message.From = @from; |
094 |
095 |
//电子邮件的标题 |
096 |
message.Subject = subject; |
097 |
098 |
//电子邮件的主题内容使用的编码 |
099 |
message.SubjectEncoding = Encoding.UTF8; |
100 |
101 |
//电子邮件正文 |
102 |
message.Body = body; |
103 |
104 |
//电子邮件正文的编码 |
105 |
message.BodyEncoding = Encoding.Default; |
106 |
message.Priority = MailPriority.High; |
107 |
message.IsBodyHtml = isBodyHtml; |
108 |
109 |
//在有附件的情况下添加附件 |
110 |
if (attachmentsPath != null && attachmentsPath.Length > 0) |
111 |
{ |
112 |
foreach ( string path in attachmentsPath) |
113 |
{ |
114 |
var attachFile = new Attachment(path); |
115 |
message.Attachments.Add(attachFile); |
116 |
} |
117 |
} |
118 |
try |
119 |
{ |
120 |
var smtp = new SmtpClient |
121 |
{ |
122 |
Credentials = new NetworkCredential(config.UserName, config.Password), |
123 |
Host = config.Host, |
124 |
Port = Convert.ToInt32(config.Port) |
125 |
}; |
126 |
127 |
//将邮件发送到SMTP邮件服务器 |
128 |
smtp.Send(message); |
129 |
//todo:记录日志 |
130 |
return true ; |
131 |
} |
132 |
catch (SmtpException ex) |
133 |
{ |
134 |
//todo:记录日志 |
135 |
return false ; |
136 |
} |
137 |
} |
138 |
catch (SmtpException ex) |
139 |
{ |
140 |
//todo:记录日志 |
141 |
return false ; |
142 |
} |
143 |
} |
144 |
} |
145 |
} |