Net发送邮件的类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/coaxhappy/article/details/8548123
    public class EmailHelper
    {
        #region Fields
        private static object asyncObj = new object();
        #endregion

        #region Singleton
        private static EmailHelper instance;

        public static EmailHelper Instance
        {
            get
            {
                lock (asyncObj)
                {
                    if (instance == null)
                    {
                        instance = new EmailHelper();
                    }

                    return instance;
                }
            }
        }
        #endregion

        /// <summary>
        /// 发送mail
        /// </summary>
        /// <param name="fromAddress">发送地址</param>
        /// <param name="subject">主题</param>
        /// <param name="body">内容</param>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="toAddress">收件人地址集合</param>
        /// <param name="emailType">邮件类型(自定义枚举)</param>
        /// <param name="attachments">附件集合</param>
        /// <param name="ccAddress">CC(抄送)地址集合</param>
        /// <param name="bccAddress">BCC(密送)地址集合</param>
        /// <param name="isEnableSsl">是否打开SSL</param>
        /// <param name="notificationOpetion">邮件发送通知选项</param>
        public void SendMail(string fromAddress, string subject, string body,
            string userName, string password,
            string[] toAddress,
            EmailTypeEnum emailType,
            string[] attachments = null,
            string[] ccAddress = null,
            string[] bccAddress = null,
            bool isEnableSsl = false,
            DeliveryNotificationOptions notificationOpetion = DeliveryNotificationOptions.Never)
        {
            MailMessage mail = new MailMessage();
            mail.Subject = subject;
            mail.IsBodyHtml = true;
            mail.BodyEncoding = Encoding.UTF8;
            mail.DeliveryNotificationOptions = notificationOpetion;
            mail.Body = body;
            mail.From = new MailAddress(fromAddress);

            toAddress.ToList().ForEach((ele) =>
            {
                mail.To.Add(new MailAddress(ele));
            });

            if (attachments != null)
            {
                attachments.ToList().ForEach((ele) =>
                {
                    mail.Attachments.Add(new Attachment(ele));
                });
            }

            if (ccAddress != null)
            {
                ccAddress.ToList().ForEach((ele) =>
                {
                    mail.CC.Add(new MailAddress(ele));
                });
            }

            if (bccAddress != null)
            {
                bccAddress.ToList().ForEach((ele) =>
                {
                    mail.Bcc.Add(new MailAddress(ele));
                });
            }

            SmtpClient client = new SmtpClient();
            client.EnableSsl = isEnableSsl;
            client.Host = GetEmailHostByEmailType(emailType);
            client.Port = 25;
            client.Credentials = new NetworkCredential(userName, password);
            client.Send(mail);
        }

        /// <summary>
        /// 根据枚举类型获取邮件主机地址
        /// </summary>
        /// <param name="emailType"></param>
        /// <returns></returns>
        private string GetEmailHostByEmailType(EmailTypeEnum emailType)
        {
            switch (emailType)
            {
                case EmailTypeEnum.Email163:
                    {
                        return "smtp.163.com";
                    }
                case EmailTypeEnum.EmailSohu:
                    {
                        return "smtp.sohu.com";
                    }
                case EmailTypeEnum.Email126:
                    {
                        return "smtp.126.com";
                    }
                case EmailTypeEnum.Sina:
                    {
                        return "smtp.sina.com";
                    }
                default:
                    {
                        return "smtp.163.com";
                    }
            }
        }
    }

    public enum EmailTypeEnum
    {
        Email163,
        EmailSohu,
        Email126,
        Sina
    }


 

猜你喜欢

转载自blog.csdn.net/coaxhappy/article/details/8548123