C#邮件提醒

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值