發送郵件

1、調用發送郵件sql

public void SendEmail()
        {
            SendEmailParam param = new SendEmailParam();
            param.Host = "smtp.163.com";//若是是QQ郵箱則:smtp:qq.com,依次類推
            param.IsBodyHtml = true;
            param.MailBody = "<h1>哈哈哈,我是正文</h1>";
            param.MailFrom = "********@163.com";
            param.MailPwd = "*********";
            param.MailSubject = "我是Subject";

            //收件集合人
            param.ReceiverList = new List<string>();
            param.ReceiverList.Add("********@qq.com");

            //抄送人集合
            param.MailCcArray = new List<string>();
            param.MailCcArray.Add("*********@qq.com");

            //附件
            param.AttachmentList = new List<string>();
            param.AttachmentList.Add(@"G:\11111.sql");

            //同步發送一個
            MailHelper.DefaultMail.SyncSendEmail(param);
            //異步發送一個
            MailHelper.DefaultMail.AsyncSendEmail(param);
        }

 

2、郵件輔助服務器

public class MailHelper
    {
        public static readonly MailHelper DefaultMail = new MailHelper();
        private object obj = new object();
        private Thread thread = null;

        /// <summary>
        /// 同步發送郵件
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public bool SyncSendEmail(SendEmailParam param)
        {
            if (param.ReceiverList == null 
                || param.ReceiverList.Count <= 0)
            {
                new Exception("請提供收件人.");
            }

            MailAddress mailAddress = new MailAddress(param.MailFrom);
            MailMessage mailMessage = new MailMessage();

            //收件人集合
            if (param.ReceiverList!=null)
            {
                foreach (var item in param.ReceiverList)
                {
                    mailMessage.To.Add(item);
                }
            }

            //抄送收件人集合
            if (param.MailCcArray!=null)
            {
                foreach (var item in param.MailCcArray)
                {
                    mailMessage.CC.Add(item);
                }
            }

            //發件人地址
            mailMessage.From = mailAddress;
            //郵件標題
            mailMessage.Subject = param.MailSubject;
            //郵件標題編碼
            mailMessage.SubjectEncoding = Encoding.UTF8;
            //郵件正文
            mailMessage.Body = param.MailBody;
            //郵件正文編碼
            mailMessage.BodyEncoding = Encoding.UTF8;
            mailMessage.Priority = MailPriority.High;
            mailMessage.IsBodyHtml = param.IsBodyHtml;

            //添加附件
            try
            {
                if (param.AttachmentList != null && param.AttachmentList.Count > 0)
                {
                    foreach (var item in param.AttachmentList)
                    {
                        if (!System.IO.File.Exists(item))
                        {
                            continue;
                        }
                        Attachment attachFile = new Attachment(item);
                        mailMessage.Attachments.Add(attachFile);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("添加附件時出錯:" + ex.Message);
            }

            SmtpClient smtp = new SmtpClient();
            //指定發件人的郵件地址和密碼以驗證發件人身份
            smtp.Credentials = new System.Net.NetworkCredential(param.MailFrom, param.MailPwd);
            //設置SMTP郵件服務器
            smtp.Host = param.Host;

            //發送郵件
            try
            {
                lock (obj)
                {
                    smtp.Send(mailMessage);
                }
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 異步發送郵件
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public void AsyncSendEmail(SendEmailParam param)
        {
            thread = new Thread(new ParameterizedThreadStart(AsyncSendEmail));
            thread.Start(param);
        }

        private void AsyncSendEmail(object obj)
        {
            try
            {
                this.SyncSendEmail(obj as SendEmailParam);
            }
            catch (Exception ex) { }
        }
    }

 

3、實體類異步

public class SendEmailParam
    {
        /// <summary>
        /// 發送者郵箱
        /// </summary>
        public string MailFrom { get; set; }

        /// <summary>
        /// 發送者郵箱密碼
        /// </summary>
        public string MailPwd { get; set; }

        /// <summary>
        /// 郵件主題
        /// </summary>
        public string MailSubject { get; set; }

        /// <summary>
        /// 郵件正文
        /// </summary>
        public string MailBody { get; set; }

        /// <summary>
        /// 正文是不是HTML格式
        /// </summary>
        public bool IsBodyHtml { get; set; }

        /// <summary>
        /// 郵件服務器
        /// </summary>
        public string Host { get; set; }

        /// <summary>
        /// 收件人郵件集合
        /// </summary>
        public List<string> ReceiverList { get; set; }

        /// <summary>
        /// 抄送者郵件集合
        /// </summary>
        public List<string> MailCcArray { get; set; }

        /// <summary>
        /// 附件集合
        /// </summary>
        public List<string> AttachmentList { get; set; }
    }
相關文章
相關標籤/搜索