Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 1106|回复: 0

C#发送邮件异常:根据验证过程,远程证书无效

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-26 09:27:49 | 显示全部楼层 |阅读模式

    今天在做发送邮件功能时,开始用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;
    
            /// <summary>
            /// 发送者邮箱
            /// </summary>
            public string From { get; set; }
    
            /// <summary>
            /// 接收者邮箱列表
            /// </summary>
            public List<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 _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; }
    
            /// <summary>
            /// 构造参数,发送邮件,使用方法备注:公开方法中调用
            /// </summary>
            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;
                }
            }
        }
    }
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 21:15 , Processed in 0.063756 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表