C#邮件发送帮助类
来源:互联网 发布:去分化 细胞编程 编辑:程序博客网 时间:2024/06/16 16:44
1.新建一个抽象类FTMailBase.cs,代码如下:
/* ======================================================== * Module Name: JuCheap.Service.SendEmail * Class Name: FTMailBase * Description: 所有邮件Sender的基类 * Company : JuCheap * Author : JuCheap * Create Date: 2014-11-03===========================================================*/using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Net.Mail;using System.Configuration;using JuCheap.Common.Extention;namespace JuCheap.Service.SendEmail{ /// <summary> /// 所有邮件Sender的基类 /// </summary> public abstract class FTMailBase { /// <summary> /// 发件人 /// </summary> public string From { get; set; } /// <summary> /// 收件人 /// </summary> public string To { get; set; } /// <summary> /// 主题 /// </summary> public string Subject { get; set; } //正文 public string Body { get; set; } /// <summary> /// 抄送 /// </summary> public string CC { get; set; } /// <summary> /// 显示名称 /// </summary> public string DisplayName { get; set; } /// <summary> /// 发送邮件 /// </summary> /// <param name="smtpServer">邮件服务器地址</param> /// <param name="port">端口</param> /// <param name="userName">帐号</param> /// <param name="password">密码</param> /// <param name="enableSSL">是否启用SSL</param> /// <returns></returns> public abstract bool Send(string smtpServer = null , int? port = default(int?) , string userName = null , string password = null , bool? enableSSL = default(bool?)); /// <summary> /// 工厂方法,获取邮件SENDER实例 /// </summary> public static FTMailBase Instance { get { return new SMTPMailer(); } } }}
2.实现抽象类;新建邮件发送类:SMTPMailer.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Net.Mail;using System.Configuration;using JuCheap.Common.Extention;namespace JuCheap.Service.SendEmail{ internal class SMTPMailer : FTMailBase { /// <summary> /// SMTP邮件Sender的类的封装 /// </summary> /// <param name="smtpServer">smtp服务地址</param> /// <param name="port">端口号</param> /// <param name="userName">用户名</param> /// <param name="password">密码</param> /// <param name="enableSSL">是否采用ssl的方式</param> public override bool Send(string smtpServer = null, int? port = default(int?), string userName = null, string password = null,bool? enableSSL=default(bool?)) { bool isSended = false; try { smtpServer = smtpServer.IsBlank() ? ConfigurationManager.AppSettings["SMTPServer_Address"] : smtpServer; port = !port.HasValue ? Convert.ToInt32(ConfigurationManager.AppSettings["SMTPServer_Port"]) : port.Value; userName = userName.IsBlank() ? ConfigurationManager.AppSettings["SMTPServer_UserName"] : userName; password = password.IsBlank() ? ConfigurationManager.AppSettings["SMTPServer_UserPwd"] : password; if (!enableSSL.HasValue) { bool temp = false; bool.TryParse(ConfigurationManager.AppSettings["SMTPServer_EnableSSL"], out temp); enableSSL = temp; } System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); message.To.Add(this.To); message.Sender = new MailAddress(userName, userName); if (!this.CC.IsBlank()) message.CC.Add(this.CC); message.Subject = System.Text.UTF8Encoding.Default.GetString(System.Text.UTF8Encoding.Default.GetBytes(this.Subject)); if (DisplayName.IsBlank()) message.From = new System.Net.Mail.MailAddress(this.From); else message.From = new System.Net.Mail.MailAddress(this.From, System.Text.UTF8Encoding.Default.GetString(System.Text.UTF8Encoding.Default.GetBytes(this.DisplayName))); message.Body = System.Text.UTF8Encoding.Default.GetString(System.Text.UTF8Encoding.Default.GetBytes(this.Body)); message.BodyEncoding = Encoding.GetEncoding("GBK") ; message.HeadersEncoding = Encoding.UTF8; message.SubjectEncoding = Encoding.UTF8; message.IsBodyHtml = true; message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; message.ReplyToList.Add(new MailAddress(this.From)); System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(smtpServer, port.Value); smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.UseDefaultCredentials = false; smtp.Credentials = new NetworkCredential(userName, password); smtp.Timeout = 30000; smtp.EnableSsl = enableSSL.Value; smtp.SendCompleted += new SendCompletedEventHandler(smtp_SendCompleted); smtp.Send(message); isSended = true; } catch (Exception ex) { Log.Write(ex); throw ex; } return isSended; } /// <summary> /// 编码成64位 /// </summary> /// <param name="s">需要编码的内容</param> /// <returns>返回被编码的内容</returns> private string encodebase64(string s) { string encode = ""; byte[] bytes = Encoding.UTF8.GetBytes(s); try { encode = Convert.ToBase64String(bytes); } catch { encode = s; } return encode; } /// <summary> /// 发送完成后,如果有错误,记录日志 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void smtp_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) { if (e.Error != null) { Log.Write(e.Error); } } }}
0 0
- C#邮件发送帮助类
- 邮件发送的帮助类
- .Net 邮件发送帮助类
- c#邮件发送 邮件类
- c# 邮件发送类
- c#发送邮件类
- C#发送邮件类
- C# 邮件发送类详解
- C#发送邮件的类
- c#邮件发送操作类
- c# 邮件发送通用类
- C# 邮件发送辅助类
- C#发送邮件工具类
- C# 邮件发送 实现类
- C#邮件发送工具类
- 发送邮件 的类 C# .net
- asp.net C#发送邮件类
- C#使用Mail类发送QQ邮件
- linux重定向(shell重定向,输入重定向,输出重定向)
- Plupload js插件 使用pluploadQueue实例化uploader文件上传
- 查询表里的字段,然后以字符串的格式输出,再用分隔符分开,成对出现
- EditText clearFocus
- Android发展史
- C#邮件发送帮助类
- Centos 7 配置 Bonding
- gulp项目构建小结(续)
- ITeye、CSTO站点升级公告
- 个人常用iOS第三方库以及XCode插件介绍
- CAP理论十二年回顾:"规则"变了
- struts2 ,session失效,拦截器
- 常用vim 命令
- bzoj4013: [HNOI2015]实验比较