马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

C#SMTP邮件类

[复制链接]
查看3304 | 回复1 | 2015-9-10 09:26:53 | 显示全部楼层 |阅读模式
[C#] 纯文本查看 复制代码
// 源文件头信息:
// <copyright file="Email.cs,EmailHelp.cs">
// Copyright(c)2014-2034 Kencery.All rights reserved.//转载
// 创建人:韩迎龙(kencery)
// 创建时间:2015-8-18
// </copyright>

using System;
using System.Net;
using System.Net.Mail;
using System.Text;

namespace KenceryCommonMethod
{
    /// <summary>
    /// 功能:实现邮件发送,分装发送邮件的调用方法
    /// </summary>
    /// <auther>
    ///     <name>Kencery</name>
    ///     <date>2015-8-18</date>
    /// </auther>
    public class Email
    {
        #region  --------------------字段--------------------

        private string _serviceType = "SMTP";
        private string _host;

        #endregion

        #region  --------------------属性--------------------

        /// <summary>
        /// 发送者邮箱
        /// </summary>
        public string From { get; set; }

        /// <summary>
        /// 接收者邮箱列表
        /// </summary>
        public string[] To { get; set; }

        /// <summary>
        /// 抄送者邮箱列表
        /// </summary>
        public string[] Cc { get; set; }

        /// <summary>
        /// 秘抄者邮箱列表
        /// </summary>
        public string[] Bcc { get; set; }

        /// <summary>
        /// 邮件主题
        /// </summary>
        public string Subject { get; set; }

        /// <summary>
        /// 邮件内容
        /// </summary>
        public string Body { get; set; }

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

        /// <summary>
        /// 附件列表
        /// </summary>
        public string[] Attachments { get; set; }

        /// <summary>
        /// 邮箱服务类型(Pop3,SMTP,IMAP,MAIL等),默认为SMTP
        /// </summary>
        public string ServiceType
        {
            get { return _serviceType; }
            set { _serviceType = value; }
        }

        /// <summary>
        /// 邮箱服务器,如果没有定义邮箱服务器,则根据serviceType和Sender组成邮箱服务器
        /// </summary>
        public string Host
        {
            get
            {
                return string.IsNullOrEmpty(_host)
                    ? (this.ServiceType + "." +
                       Sender.Split("@".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[1])
                    : _host;
            }
            set { _host = value; }
        }

        /// <summary>
        /// 邮箱账号(默认为发送者邮箱的账号)
        /// </summary>
        public string UserName { get; set; }

        /// <summary>
        /// 邮箱密码(默认为发送者邮箱的密码),默认格式GB2312
        /// </summary>
        public string Password { get; set; }

        /// <summary>
        /// 邮箱优先级
        /// </summary>
        public MailPriority MailPriority { get; set; }

        /// <summary>
        ///  邮件正文编码格式
        /// </summary>
        public Encoding Encoding { get; set; }

        #endregion

        #region  ------------------调用方法------------------

        /// <summary>
        /// 构造参数,发送邮件,使用方法备注:公开方法中调用
        /// </summary>
        public void Send()
        {
            var mailMessage = new MailMessage();

            //读取To  接收者邮箱列表
            if (this.To != null && this.To.Length > 0)
            {
                foreach (string to in this.To)
                {
                    if (string.IsNullOrEmpty(to)) continue;
                    try
                    {
                        mailMessage.To.Add(new MailAddress(to.Trim()));
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message);
                    }
                }
            }
            //读取Cc  抄送者邮件地址
            if (this.Cc != null && this.Cc.Length > 0)
            {
                foreach (var cc in this.Cc)
                {
                    if (string.IsNullOrEmpty(cc)) continue;
                    try
                    {
                        mailMessage.CC.Add(new MailAddress(cc.Trim()));
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message);
                    }
                }
            }
            //读取Attachments 邮件附件
            if (this.Attachments != null && this.Attachments.Length > 0)
            {
                foreach (var attachment in this.Attachments)
                {
                    if (string.IsNullOrEmpty(attachment)) continue;
                    try
                    {
                        mailMessage.Attachments.Add(new Attachment(attachment));
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message);
                    }
                }
            }
            //读取Bcc 秘抄人地址
            if (this.Bcc != null && this.Bcc.Length > 0)
            {
                foreach (var bcc in this.Bcc)
                {
                    if (string.IsNullOrEmpty(bcc)) continue;
                    try
                    {
                        mailMessage.Bcc.Add(new MailAddress(bcc.Trim()));
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message);
                    }
                }
            }
            //读取From 发送人地址
            try
            {
                mailMessage.From = new MailAddress(this.From);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            //邮件标题
            Encoding encoding = Encoding.GetEncoding("GB2312");
            mailMessage.Subject = string.Format("?={0}?B?{1}?=", encoding.HeaderName,
                Convert.ToBase64String(encoding.GetBytes(this.Subject), Base64FormattingOptions.None));
            //邮件正文是否为HTML格式
            mailMessage.IsBodyHtml = this.IsBodyHtml;
            //邮件正文
            mailMessage.Body = this.Body;
            mailMessage.BodyEncoding = this.Encoding;
            //邮件优先级
            mailMessage.Priority = this.MailPriority;

            //发送邮件代码实现
            var smtpClient = new SmtpClient
            {
                Host = this.Host,
                Credentials = new NetworkCredential(this.UserName, this.Password)
            };
            //认证
            try
            {
                smtpClient.Send(mailMessage);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

        #endregion
    }

    /// <summary>
    ///邮件发送接口调用:bool isTrue=EmailInfo.SendEmail(参数,........);   参数解释参考方法
    /// <auther>
    ///     <name>Kencery</name>
    ///     <date>2015-8-18</date>
    /// </auther>
    /// </summary>
    public static class EmailInfo
    {
        /// <summary>
        /// 邮件发送方法,传递参数(使用中如出现问题,请调试)
        /// </summary>
        /// <param name="from">发送者邮箱名称(从配置文件中读取,比如:[email]934532778@qq.com[/email])(必填项)</param>
        /// <param name="to">接收者邮箱列表,可以传递多个,使用string[]表示(从配置文件中读取)(必填项)</param>
        /// <param name="cc">抄送者邮箱列表,可以传递多个,使用string[]表示(从配置文件中读取)</param>
        /// <param name="bcc">秘抄者邮箱列表,可以传递多个,使用string[]表示(从配置文件中读取)</param>
        /// <param name="subject">邮件主题,构造(必填项)</param>
        /// <param name="body">邮件内容,构造发送的邮件内容,可以发送网页(必填项)</param>
        /// <param name="isBodyHtml">是否是HTML格式,true为是,false为否</param>
        /// <param name="attachments">邮箱附件,可以传递多个,使用string[]表示(从配置文件中读取),可空</param>
        /// <param name="host">邮箱服务器(从配置文件中读取,如:[email]smtp@qq.com[/email])(必填项)</param>
        /// <param name="password">邮箱密码(从配置文件中读取,from邮箱的密码)(必填项)</param>
        /// <returns>邮件发送成功,返回true,否则返回false</returns>
        public static bool SendEmail(string from, string[] to, string[] cc, string[] bcc, string subject, string body,
            bool isBodyHtml, string[] attachments, string host, string password)
        {
            //邮箱发送不满足,限制这些参数必须传递
            if (from == "" || to.Length <= 0 || subject == "" || body == "" || host == "" || password == "")
            {
                return false;
            }

            var emil = new Email
            {
                From = @from,
                To = to,
                Cc = cc,
                Bcc = bcc,
                Subject = subject,
                Body = body,
                IsBodyHtml = isBodyHtml,
                Attachments = attachments,
                Host = host,
                Password = password
            };
            try
            {
                emil.Send();
                return true;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
    }
}



相关帖子

C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
jeenlee | 2016-10-10 13:33:48 | 显示全部楼层
不错
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则