1 ///2 /// 电子邮件操作类。 3 /// 4 public class Mail 5 { 6 ///7 /// 初始化一个电子邮件操作类的空实例。 8 /// 9 public Mail() 10 { 11 } 12 ///13 /// 初始化一个电子邮件操作类的实例。 14 /// 15 /// 发件人的电子邮件地址。 16 /// 发件人的姓名。 17 /// 收件人的电子邮件地址。 18 /// 收件人的姓名。 19 /// 电子邮件的主题。 20 /// 电子邮件的内容。 21 /// 电子邮件的服务器地址。 22 /// 电子邮件的主机端口号。 23 /// 登录电子邮件服务器的用户名。 24 /// 登录电子邮件服务器的用户密码。 25 /// 邮件的正文是否是HTML格式。 26 /// 邮件附件的文件路径。 27 public Mail(string from, string fromName, string recipient, string recipientName, string subject, string body, string host, int port, string username, string password, bool isBodyHtml, string filepath) 28 { 29 this._from = from; 30 this._fromName = fromName; 31 this._recipient = recipient; 32 this._recipientName = recipientName; 33 this._subject = subject; 34 this._body = body; 35 this._serverHost = host; 36 this._serverPort = port; 37 this._username = username; 38 this._password = password; 39 this._isBodyHtml = isBodyHtml; 40 this._attachment.Add(filepath); 41 } 42 ///43 /// 初始化一个电子邮件操作类的实例。 44 /// 45 /// 发件人的电子邮件地址。 46 /// 发件人的姓名。 47 /// 收件人的电子邮件地址。 48 /// 收件人的姓名。 49 /// 电子邮件的主题。 50 /// 电子邮件的内容。 51 /// 电子邮件的服务器地址。 52 /// 电子邮件的主机端口号。 53 /// 登录电子邮件服务器的用户名。 54 /// 登录电子邮件服务器的用户密码。 55 /// 邮件的正文是否是HTML格式。 56 public Mail(string from, string fromName, string recipient, string recipientName, string subject, string body, string host, int port, string username, string password, bool isBodyHtml) 57 : this(from, fromName, recipient, recipientName, subject, body, host, 25, username, password, isBodyHtml, null) 58 { 59 } 60 61 ///62 /// 初始化一个电子邮件操作类的实例。 63 /// 64 /// 发件人的电子邮件地址。 65 /// 发件人的姓名。 66 /// 收件人的电子邮件地址。 67 /// 收件人的姓名。 68 /// 电子邮件的主题。 69 /// 电子邮件的内容。 70 /// 电子邮件的服务器地址。 71 /// 电子邮件的主机端口号。 72 /// 登录电子邮件服务器的用户名。 73 /// 登录电子邮件服务器的用户密码。 74 /// 邮件的正文是否是HTML格式。 75 public Mail(string from, string fromName, string recipient, string recipientName, string subject, string body, string host, string username, string password) 76 : this(from, fromName, recipient, recipientName, subject, body, host, 25, username, password, false, null) 77 { 78 } 79 ///80 /// 初始化一个电子邮件操作类的实例(邮件的正文非HTML格式,端口默认25)。 81 /// 82 /// 发件人的电子邮件地址。 83 /// 收件人的电子邮件地址。 84 /// 电子邮件的主题。 85 /// 电子邮件的内容。 86 /// 电子邮件的服务器地址。 87 /// 登录电子邮件服务器的用户名。 88 /// 登录电子邮件服务器的用户密码。 89 /// 邮件的正文是否是HTML格式。 90 public Mail(string from, string recipient, string subject, string body, string host, string username, string password) 91 : this(from, null, recipient, null, subject, body, host, 25, username, password, false, null) 92 { 93 } 94 ///95 /// 初始化一个电子邮件操作类的实例(邮件的正文非HTML格式,端口默认25)。 96 /// 97 /// 发件人的电子邮件地址。 98 /// 收件人的电子邮件地址。 99 /// 电子邮件的主题。 100 /// 电子邮件的内容。 101 /// 电子邮件的主机端口号。 102 /// 电子邮件的服务器地址。 103 /// 登录电子邮件服务器的用户名。 104 /// 登录电子邮件服务器的用户密码。 105 public Mail(string from, string recipient, string subject, string body, string host, int port, string username, string password) 106 : this(from, null, recipient, null, subject, body, host, port, username, password, false, null) 107 { 108 } 109 110 private string _subject; 111 private string _body; 112 private string _from; 113 private string _fromName; 114 private string _recipientName; 115 private string _serverHost; 116 private int _serverPort; 117 private string _username; 118 private string _password; 119 private bool _isBodyHtml; 120 private string _recipient; 121 private List_attachment = new List { }; 122 123 /// 124 /// 获取或设置邮件的主题。 125 /// 126 public string Subject 127 { 128 get { return this._subject; } 129 set { this._subject = value; } 130 } 131 132 ///133 /// 获取或设置邮件的正文内容。 134 /// 135 public string Body 136 { 137 get { return this._body; } 138 set { this._body = value; } 139 } 140 141 ///142 /// 获取或设置发件人的邮件地址。 143 /// 144 public string From 145 { 146 get { return this._from; } 147 set { this._from = value; } 148 } 149 150 ///151 /// 获取或设置发件人的姓名。 152 /// 153 public string FromName 154 { 155 get { return this._fromName; } 156 set { this._fromName = value; } 157 } 158 159 ///160 /// 获取或设置收件人的姓名。 161 /// 162 public string RecipientName 163 { 164 get { return this._recipientName; } 165 set { this._recipientName = value; } 166 } 167 168 ///169 /// 获取或设置收件人的邮件地址。 170 /// 171 public string Recipient 172 { 173 get { return this._recipient; } 174 set { this._recipient = value; } 175 } 176 177 ///178 /// 获取或设置邮件服务器主机地址。 179 /// 180 public string ServerHost 181 { 182 get { return this._serverHost; } 183 set { this._serverHost = value; } 184 } 185 186 ///187 /// 获取或设置邮件服务器的端口号。 188 /// 189 public int ServerPort 190 { 191 set { this._serverPort = value; } 192 get { return this._serverPort; } 193 } 194 195 196 ///197 /// 获取或设置SMTP认证时使用的用户名。 198 /// 199 public string Username 200 { 201 get { return this._username; } 202 set 203 { 204 if (value.Trim() != "") 205 { 206 this._username = value.Trim(); 207 } 208 else 209 { 210 this._username = ""; 211 } 212 } 213 } 214 215 ///216 /// 获取或设置SMTP认证时使用的密码。 217 /// 218 public string Password 219 { 220 set { this._password = value; } 221 get { return this._password; } 222 } 223 224 ///225 /// 获取或设置指示邮件正文是否为 Html 格式的值。 226 /// 227 public bool IsBodyHtml 228 { 229 get { return this._isBodyHtml; } 230 set { this._isBodyHtml = value; } 231 } 232 233 ///234 /// 获取电子邮件附件。 235 /// 236 public ListAttachment 237 { 238 get { return this._attachment; } 239 set { this._attachment = value; } 240 } 241 242 ///// 243 ///// 添加一个收件人的邮箱地址。 244 ///// 245 ///// 联系人列表。 246 /////247 //public bool AddRecipient(params string[] mailList) 248 //{ 249 // this.Recipient = mailList[0].Trim(); 250 // return true; 251 //} 252 253 /// 254 /// 添加电子邮件附件。 255 /// 256 /// 文件列表。 257 ///是否添加成功。 258 public bool AddAttachment(params string[] fileList) 259 { 260 if (fileList.Length > 0) 261 { 262 foreach (string file in fileList) 263 { 264 if (file != null) 265 { 266 this._attachment.Add(file); 267 } 268 else 269 { 270 return false; 271 } 272 } 273 return true; 274 } 275 else 276 { 277 return false; 278 } 279 } 280 ///281 /// 发送电子邮件。 282 /// 283 ///是否发送成功。 284 public bool Send() 285 { 286 //初始化 MailMessage 对象。 287 MailMessage mail = new MailMessage(); 288 Encoding encoding = Encoding.GetEncoding("utf-8"); 289 mail.From = new MailAddress(this.From, this.FromName, encoding); 290 mail.To.Add(new MailAddress(this.Recipient, this.RecipientName)); 291 mail.Subject = this.Subject; 292 mail.IsBodyHtml = this.IsBodyHtml; 293 mail.Body = this.Body; 294 mail.Priority = MailPriority.Normal; 295 mail.BodyEncoding = encoding; 296 if (this.Attachment.Count > 0) 297 { 298 foreach (string file in this.Attachment) 299 { 300 mail.Attachments.Add(new Attachment(file)); 301 } 302 } 303 //初始化 SmtpClient 对象。 304 SmtpClient smtp = new SmtpClient(); 305 smtp.Host = this.ServerHost; 306 smtp.Port = this.ServerPort; 307 smtp.Credentials = new NetworkCredential(this.Username, this.Password); 308 if (smtp.Port != 25) 309 { 310 smtp.EnableSsl = true; 311 } 312 try 313 { 314 smtp.Send(mail); 315 } 316 catch (SmtpException ex) 317 { 318 string message = ex.Message; 319 return false; 320 } 321 return true; 322 } 323 }