C#编程之C#发送邮件异常:根据验证过程,远程证书无效
小标 2018-10-22 来源 : 阅读 1814 评论 0

摘要:本文主要向大家介绍了C#编程之C#发送邮件异常:根据验证过程,远程证书无效,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

本文主要向大家介绍了C#编程之C#发送邮件异常:根据验证过程,远程证书无效,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

今天在做发送邮件功能时,开始用qq邮箱和163邮箱都可以正常发送,后再改用我公司的邮箱和smtp时竟然报错了。
异常提示-----“根据验证过程,远程证书无效”,后来通过查询资料解决该问题,上代码:

using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;

namespace BLL
{
    public class emailHandle
    {
        private string _serviceType = "SMTP";
        private string _host;

        /// 


        /// 发送者邮箱
        /// 


        public string From { get; set; }

        /// 


        /// 接收者邮箱列表
        /// 


        public List

 To { get; set; }

        /// 
        /// 抄送者邮箱列表
        /// 

        public string[] Cc { get; set; }

        /// 
        /// 秘抄者邮箱列表
        /// 

        public string[] Bcc { get; set; }

        /// 
        /// 邮件主题
        /// 

        public string Subject { get; set; }

        /// 
        /// 邮件内容
        /// 

        public string Body { get; set; }

        /// 
        /// 是否是HTML格式
        /// 

        public bool IsBodyHtml { get; set; }

        /// 
        /// 附件列表
        /// 

        public string[] Attachments { get; set; }

        /// 
        /// 邮箱服务类型(Pop3,SMTP,IMAP,MAIL等),默认为SMTP
        /// 

        public string ServiceType
        {
            get { return _serviceType; }
            set { _serviceType = value; }
        }

        /// 
        /// 邮箱服务器,如果没有定义邮箱服务器,则根据serviceType和Sender组成邮箱服务器
        /// 

        public string Host
        {
            get { return _host; }
            set { _host = value; }
        }

        /// 
        /// 邮箱账号(默认为发送者邮箱的账号)
        /// 

        public string UserName { get; set; }

        /// 
        /// 邮箱密码(默认为发送者邮箱的密码),默认格式GB2312
        /// 

        public string Password { get; set; }

        /// 
        /// 邮箱优先级
        /// 

        public MailPriority MailPriority { get; set; }

        /// 
        ///  邮件正文编码格式
        /// 

        public Encoding Encoding { get; set; }

        /// 
        /// 构造参数,发送邮件,使用方法备注:公开方法中调用
        /// 

        public int Send()
        {
            var mailMessage = new MailMessage();

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

                //邮件标题
                Encoding encoding = Encoding.GetEncoding("GB2312");
                mailMessage.Subject = this.Subject;
                //邮件正文是否为HTML格式
                mailMessage.IsBodyHtml = this.IsBodyHtml;
                //邮件正文
                mailMessage.Body = this.Body;
                mailMessage.BodyEncoding = this.Encoding;
                //邮件优先级
                mailMessage.Priority = this.MailPriority;

                //发送邮件代码实现
                var smtpClient = new SmtpClient
                {
                    Host = this.Host,
                    EnableSsl = true,
                    Credentials = new NetworkCredential(this.UserName, this.Password)
                };
//加这段之前用公司邮箱发送报错:根据验证过程,远程证书无效
//加上后解决问题
                ServicePointManager.ServerCertificateValidationCallback =
delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; };
                //认证
                smtpClient.Send(mailMessage);
                return 1;
            }
            catch (Exception ex)
            {
                var loger = LogManager.GetLogger(typeof(emailHandle));
                loger.Info(string.Format("发送邮件异常,收信邮箱:{0}", this.To[0]), ex);
                return -1;
            }
        }
    }
}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C#.NET频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程