C#邮件提醒

来源:互联网 发布:网游网络加速器哪个好 编辑:程序博客网 时间:2024/05/01 12:42

1.webconfig配置邮件基本信息

<!--系统邮件发送设置-->    <add key="eMailServer" value="IP地址" />    <add key="eMailSenderUsername" value="??" />    <add key="eMailSenderPassword" value="??" />    <!--程序出错监测人邮箱地址-->    <add key="MonitorPerson" value="qqq@123.com;www@123.com;" />

2.common类中调用webconfig信息

 /// <summary>        /// 设置发送邮件的用户的用户名        /// </summary>        public static string eMailSenderUsername        {            get            {                if (!ConfigurationManager.AppSettings.AllKeys.Contains("eMailSenderUsername" + _RunSetSuffix))                {                    throw new Exception("请检查Web.config文件,appSettings节点是否存在eMailSenderUsername" + _RunSetSuffix + "节点。");                }                return ConfigurationManager.AppSettings["eMailSenderUsername" + _RunSetSuffix];            }        }        /// <summary>        /// 设置发送邮件的用户的密码        /// </summary>        public static string eMailSenderPassword        {            get            {                if (!ConfigurationManager.AppSettings.AllKeys.Contains("eMailSenderPassword" + _RunSetSuffix))                {                    throw new Exception("请检查Web.config文件,appSettings节点是否存在eMailSenderPassword" + _RunSetSuffix + "节点。");                }                return ConfigurationManager.AppSettings["eMailSenderPassword" + _RunSetSuffix];            }        }

3.申明邮件类

public class EMail    {        private MailMessage mMailMessage;   //主要处理发送邮件的内容(如:收发人地址、标题、主体、图片等等)        private SmtpClient mSmtpClient;     //主要处理用smtp方式发送此邮件的配置信息(如:邮件服务器、发送端口号、验证方式等等)        private int mSenderPort = 25;       //发送邮件所用的端口号(htmp协议默认为25)        private string mSenderServerHost = Config.eMailServer;          //发件箱的邮件服务器地址(IP形式或字符串形式均可)        private string mSenderUsername = Config.eMailSenderUsername;    //发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)        private string mSenderPassword = Config.eMailSenderPassword;    //发件箱的密码         private bool mEnableSsl = false;                //是否对邮件内容进行socket层加密传输        private bool mEnablePwdAuthentication = true;   //是否对发件人邮箱进行密码验证        /// <summary>        /// 构造函数        /// </summary>        /// <param name="fromMail">发件人</param>        /// <param name="toMail">收件人,多个收件人之间用';'分隔</param>        /// <param name="CCMail">抄送人,多个收件人之间用';'分隔</param>        /// <param name="emailSubject">标题</param>        /// <param name="emailBody">正文</param>        /// <param name="emailAnnex">附件相对地址</param>        public EMail(string fromMail, string toMail, string CCMail, string emailSubject, string emailBody, string emailAnnex)        {            try            {                mMailMessage = new MailMessage();                string[] tempTo = toMail.Split(';');                if (tempTo.Length > 0)                {                    for (int i = 0; i < tempTo.Length; i++)                    {                        if (!string.IsNullOrEmpty(tempTo[i]))                        {                            mMailMessage.To.Add(tempTo[i]);                        }                    }                }                if (!string.IsNullOrEmpty(CCMail))                {                    string[] tempCC = CCMail.Split(';');                    if (tempCC.Length > 0)                    {                        for (int i = 0; i < tempCC.Length; i++)                        {                            if (!string.IsNullOrEmpty(tempCC[i]))                            {                                mMailMessage.CC.Add(tempCC[i]);                            }                        }                    }                }                mMailMessage.From = new MailAddress(fromMail);                mMailMessage.Subject = emailSubject;                mMailMessage.Body = emailBody;                mMailMessage.IsBodyHtml = true;                mMailMessage.BodyEncoding = System.Text.Encoding.UTF8;                mMailMessage.Priority = MailPriority.Normal;                if (!string.IsNullOrEmpty(emailAnnex) && File.Exists(emailAnnex))                {                    //构造一个附件对象                    Attachment attach = new Attachment(emailAnnex);                    //得到文件的信息                    ContentDisposition disposition = attach.ContentDisposition;                    disposition.CreationDate = File.GetCreationTime(emailAnnex);                    disposition.ModificationDate = File.GetLastWriteTime(emailAnnex);                    disposition.ReadDate = File.GetLastAccessTime(emailAnnex);                    //向邮件添加附件                    mMailMessage.Attachments.Add(attach);                }            }            catch (Exception e)            {                //Console.WriteLine(e.Message);                throw e;            }        }        /// <summary>                /// 邮件的发送               /// /// </summary>                public void Send()        {            try            {                if (mMailMessage != null)                {                    mSmtpClient = new SmtpClient();                    mSmtpClient.Host = this.mSenderServerHost;                    mSmtpClient.Port = this.mSenderPort;                    mSmtpClient.UseDefaultCredentials = false;  //不适用默认凭证                    mSmtpClient.EnableSsl = this.mEnableSsl;                    if (this.mEnablePwdAuthentication)                    {                        System.Net.NetworkCredential nc = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword);     //身份凭证                                           mSmtpClient.Credentials = nc.GetCredential(mSmtpClient.Host, mSmtpClient.Port, "NTLM");//身份凭证                    }                    else                    {                        mSmtpClient.Credentials = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword);//身份凭证                    }                    mSmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;    //发送方式为网络发送                    mSmtpClient.Send(mMailMessage); //发送                }            }            catch (Exception e)            {                //Console.WriteLine(e.Message);                throw e;            }        }    }

4.调用Email类

        #region 邮件提醒        /// <summary>        /// 邮件提醒        /// </summary>        /// <param name="info"></param>        public static void sendEmail(string info)        {            //遍历同步失败的数据,给IT管理人员发邮件通知            StringBuilder sb = new StringBuilder()                            .Append("<body style=\"margin: 10px; font-size: 12pt;\">")                            .Append("    <div>您好:</div>")                            .Append("    <div style=\"text-indent: 2em;\">以下信息同步,请及时查询!</div>")                            .Append("    <div style=\"text-indent: 2em;\">&nbsp;</div>")                            .Append("    <div style=\"margin-left: 2em;\">");            sb.AppendFormat("异常编号:{0}<br />", info);            //发送提醒邮件            EMail email = new EMail(                    "mossadmin@hitechsemi.com", //系统发送的                    Config.MonitorPerson,       //提醒邮件接收者                    null,                       //抄送人收件箱地址                    "信息同步失败!",     //邮件标题                    sb.ToString(),              //邮件正文                    null);                      //附件            email.Send();        }        #endregion
0 0