请选择 进入手机版 | 继续访问电脑版

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

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#问题入口 ASP.NET问题入口

【C#问题提交】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接毕业设计】 面试-葵花宝典下载

官方一群:

官方二群:

查看: 2224|回复: 1

C#SMTP邮件类

[复制链接]
  • TA的每日心情
    开心
    昨天 11:57
  • 签到天数: 1887 天

    [LV.Master]伴坛终老

    4257

    主题

    6214

    帖子

    12万

    积分

    管理员

    IBC编程社区-原道楠

    Rank: 9Rank: 9Rank: 9

    积分
    128409

    推广达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2015-9-10 09:26:53 | 显示全部楼层 |阅读模式

    马上加入IBC,查看更多教程

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    [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编程社区

    该用户从未签到

    0

    主题

    9

    帖子

    18

    积分

    新手上路

    Rank: 1

    积分
    18
    发表于 2016-10-10 13:33:48 | 显示全部楼层
    不错
    *滑块验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则