C# 电子邮件发送方法

来源:互联网 发布:第一财经软件 编辑:程序博客网 时间:2024/05/29 10:00

在软件开发时,特别是业务系统,像ERP,CRM等系统,在运维时,依靠管理员每天固定的查询了解系统运行情况,往往会因为机械的操作产生疲劳感,而且这种重复的劳动完全可以依靠系统自身在系统空闲时来完成,然后产生一份每日的运维检查报告自身的运行情况。即时的告知管理员运行时所产生的问题。还有很多的系统报告,如销售报表等。在系统开发时,把检查程序设计进去,然后在运行时,利用电子邮件定时向管理员报告运行情况,这就有效的提供了系统管理的人性化,降低了工作强度。我在做ERP时,给客户实施对此很有感触,客户往往信息化水平并不高,管理员的往往也是让办公室的人顶的,依靠他们主动了解系统的运行情况,是很有风险的,让系统主动告诉管理员系统的运行情况,然后告知一些定义的处理方法,可以让管理员不必事事求着软件公司,作为软件开发方来说,客服的压力可以去掉好多。还有一点,一般来说,客户一般不允许软件公司运维时直接远程接入服务器,同时,除了错误,管理员又看不懂系统日志。系统出错之后,让系统主动把相应的错误日志也当做附件发送给管理员,在与软件公司技术人员沟通时,也会顺畅的多,同时也保证了客户的数据安全。

   电子邮件在系统管理时,还是最好的数据采集工具。

  开发环境:VS2005   .NET2.0

  项目下载地址:CSharpEmail.zip

view sourceprint?
001/*****************************************************************/
002/* 作者:虞晓杰
003 * Emial:fishyxj@sina.com
004 * 2011.9.28
005 * 功能:发送自定义电子邮件,可以用于在系统发送自定义系统邮件。
006/*****************************************************************/
007 
008using System;
009using System.Net;
010using System.Net.Mail;
011using System.Net.Mime;
012namespace XFish.Utils
013{
014    /// <summary> 
015    /// 电子邮件发送器类
016    /// </summary> 
017    public class EMailTransmitter
018    {
019        #region 类内部变量
020        private MailMessage _MailMessage;
021        private SmtpClient _SmtpClient;
022        private string _Password;
023        #endregion
024 
025        #region 类属性
026        /// <summary>
027        /// 邮件正文
028        /// </summary>
029        public string Body
030        {
031            get { return _MailMessage.Body; }
032            set { _MailMessage.Body = value; }
033        }
034        /// <summary>
035        /// 邮件标题
036        /// </summary>
037        public string Title
038        {
039            get { return _MailMessage.Subject; }
040            set { _MailMessage.Subject = value; }
041        }
042        /// <summary>
043        /// 发送密码
044        /// </summary>
045        public string Password
046        {
047            get { return _Password; }
048            set { _Password = value; }
049        }
050        #endregion
051 
052        #region 类初始化
053        /// <summary> 
054        /// 处审核后类的实例 
055        /// </summary> 
056        /// <param name="To">收件人地址</param> 
057        /// <param name="From">发件人地址</param> 
058        /// <param name="Body">邮件正文</param> 
059        /// <param name="Title">邮件的主题</param> 
060        /// <param name="Password">发件人密码</param> 
061        public EMailTransmitter(string to, string from, string body, string title, string password)
062        {
063            _MailMessage = new MailMessage();
064            _MailMessage.To.Add(to);
065            _MailMessage.From = new System.Net.Mail.MailAddress(from);
066            _MailMessage.Subject = title;
067            _MailMessage.Body = body;
068            _MailMessage.IsBodyHtml = true;
069            _MailMessage.BodyEncoding = System.Text.Encoding.UTF8;
070            _MailMessage.Priority = System.Net.Mail.MailPriority.Normal;
071            _Password = password;
072        }
073        #endregion
074 
075        #region 类方法
076        /// <summary>
077        /// 增加接收方地址
078        /// </summary>
079        /// <param name="to">接收方的邮件地址</param>
080        public void AddReceiver(string to)
081        {
082            MailAddress address = new MailAddress(to);
083            if (!_MailMessage.To.Contains(address))
084                _MailMessage.To.Add(to);
085        }
086        /// <summary>
087        /// 删除指定的接收方地址
088        /// </summary>
089        /// <param name="to">接收方的邮件地址</param>
090        public void RemoveReceiver(string to)
091        {
092            MailAddress address = new MailAddress(to);
093            if (_MailMessage.To.Contains(address))
094                _MailMessage.To.Remove(address);
095        }
096        /// <summary>
097        /// 添加附件
098        /// </summary>
099        /// <param name="Path">附件的路径</param>
100        public void AddAttachments(string path) 
101        
102            string[] paths = path.Split(','); 
103            Attachment data; 
104            ContentDisposition disposition; 
105            for (int i = 0; i < paths.Length; i++) 
106            
107                data = new Attachment(paths[i], MediaTypeNames.Application.Octet);//实例化附件 
108                disposition = data.ContentDisposition; 
109                disposition.CreationDate = System.IO.File.GetCreationTime(paths[i]);//获取 附件的创建日期 
110                disposition.ModificationDate = System.IO.File.GetLastWriteTime(paths[i]);//获取附件的修改日期 
111                disposition.ReadDate = System.IO.File.GetLastAccessTime(paths[i]);//获取附件的读取日期 
112                _MailMessage.Attachments.Add(data);//添加到附件中 
113            
114        }
115        /// <summary>
116        /// 删除附件
117        /// </summary>
118        /// <param name="path">附件的路径</param>
119        public void RemoveAttachments(string path)
120        {
121            string[] paths = path.Split(',');
122            Attachment data;
123            ContentDisposition disposition; 
124            for (int i = 0; i < paths.Length; i++)
125            {
126                data = new Attachment(paths[i], MediaTypeNames.Application.Octet);
127                disposition = data.ContentDisposition; 
128                disposition.CreationDate = System.IO.File.GetCreationTime(paths[i]);//获取 附件的创建日期 
129                disposition.ModificationDate = System.IO.File.GetLastWriteTime(paths[i]);//获取附件的修改日期 
130                disposition.ReadDate = System.IO.File.GetLastAccessTime(paths[i]);//获取附件的读取日期 
131                if(_MailMessage.Attachments.Contains(data))
132                    _MailMessage.Attachments.Remove(data);
133            }
134        }
135        /// <summary> 
136        /// 异步发送邮件 
137        /// </summary> 
138        /// <param name="CompletedMethod">完成后调用的事件</param> 
139        public void SendAsync(SendCompletedEventHandler CompletedMethod)
140        {
141            if (_MailMessage != null)
142            {
143                _SmtpClient = new SmtpClient();
144                _SmtpClient.Credentials = new System.Net.NetworkCredential(_MailMessage.From.Address, _Password);//设置发件人身份的票据 
145                _SmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
146                _SmtpClient.Host = "smtp." + _MailMessage.From.Host;
147                _SmtpClient.SendCompleted += new SendCompletedEventHandler(CompletedMethod);//注册异步发送邮件完成时的事件 
148                _SmtpClient.SendAsync(_MailMessage, _MailMessage.Body);
149            }
150        }
151        /// <summary> 
152        /// 发送邮件 
153        /// </summary> 
154        public void Send()
155        {
156            if (_MailMessage != null)
157            {
158                _SmtpClient = new SmtpClient();
159                _SmtpClient.Credentials = new System.Net.NetworkCredential(_MailMessage.From.Address, _Password);//设置发件人身份的票据 
160                _SmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
161                _SmtpClient.Host = "smtp." + _MailMessage.From.Host;
162                _SmtpClient.Send(_MailMessage);
163            }
164        }
165        #endregion
166    }
167}

原创粉丝点击