今天在做发送邮件功能时,开始用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;}}}
}

转载于:https://www.cnblogs.com/yifengjianbai/p/6128396.html

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

  1. “已使用指定的进程(“Web Management Service”)连接到远程计算机,但未能验证服务器的证书”的解决方案

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:"已使用指定的进程("Web Management Service")连接到远程计算机,但未能验证服务器 ...

  2. 关于The remote certificate is invalid according to the validation procedure(远程证书验证过程无效)的解决方案

    项目的需要,对接微信和支付宝支付的时候,特别在在windows 2003 服务器上,微信支付和支付宝支付时候都出现The remote certificate is invalid according ...

  3. Android的证书验证过程

    说明:本文分析源码基于Android_8.1 (还在看代码和修改文章的阶段,有点乱,慢慢来-) 文章目录 0x01 系统证书 0x02 证书管理类 0x03 证书验证流程 3.1 建立安全的连接 3. ...

  4. 远程桌面无法连接到远程计算机,因为从远程计算机接受的身份验证证书,仅允许运行使用网络级别身份验证的远程桌面计算机连接失败处理方法(远程桌面连接)...

    计算机在开启远程桌面的时候选中了"仅允许运行使用网络级别身份验证的远程桌面计算机连接",于是连接时提示错误如下: 远程计算机需要网络级别身份验证,而您的计算机不支持该验证,请联系您 ...

  5. 制药行业验证过程中的偏差如何处理?

    制药企业进行验证活动时--可能会出现测试结果与验证目标不一致的情况,对于同一个不一致,不同的原因处理方式亦不同.对偏差进行分类管理,以不同的方法和流程区分对待,一方面能达到降低质量风险的目的,另一方面 ...

  6. Linux中ssh基于密匙的安全验证过程是怎样的?

    在Linux中,ssh是非常重要的存在,但很多人对"ssh"这个概念很模糊,听起来也很晦涩难懂,那么Linux ssh是什么?有什么用?这篇文章为你解答一下. SSH是一种协议.S ...

  7. vue12Jwt详解+JWT组成+JWT的验证过程+JWT令牌刷新思路+代码

    目录 1. JWT是什么 2. 为什么使用JWT 3. JWT的工作原理: 4. JWT组成 JWT结构原理图: JWT实际结构: 4.1 Header 4.2 Payload(负荷) 4.3 sig ...

  8. VeriSign扩展验证EV SSL证书–128位支持型SSL服务器证书(VeriSign Secure Site with EV)

    VeriSign扩展验证EV SSL证书–128位支持型SSL服务器证书(VeriSign Secure Site with EV) • 全球最为知名的SSL证书品牌 • 40/56/128/256 ...

  9. VeriSign扩展验证EV SSL证书——128位强制型SSL服务器证书(VeriSign Secure Site Pro with EV)...

    VeriSign扩展验证EV SSL证书--128位强制型SSL服务器证书(VeriSign Secure Site Pro with EV) • 全球最为知名的SSL证书品牌 • SGC128位强制 ...

最新文章

  1. 彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战
  2. 两个形状不同的长方形周长_借助思维导图玩转小学阶段三种不同计算图形周长的方法!...
  3. 区块链软件公司用区块链技能重塑科学出书社
  4. 我的世界服务器高清修复,我的世界1.7.2 skinme高清修复(optifine)兼容版 35+8大型基础包...
  5. 2.6 矩阵乘法重要特例
  6. Sublime Text插件列表
  7. 计算机网络关于封装成帧题目,上海第二工业大学-计算机网络通信期中试卷答案...
  8. 快速幂(二进制理解)
  9. spring mvc 和ajax异步交互完整实例
  10. 从.NET中委托写法的演变谈开去(中):Lambda表达式及其优势
  11. liunxs运维_Linux运维工程师必备(命令)
  12. Java Scanner 类,获取用户输入的值
  13. paip.asp VBS开发IDE VBSEDIT总结
  14. GBDT(Gradient Boosting Decision Tree) 没有实现只有原理
  15. 建立数据通道,解决IMX6边编码边解码的问题
  16. STM32旋转立方体
  17. 注册微信小程序账号 APPID的获取
  18. 计算机1级考试试题ps,2016年计算机等级考试一级ps模拟练习题及答案
  19. rtlinux linux实时补丁,(九)RTLinux补丁以及cyclictest
  20. array_unshift php,php array_unshift函数怎么用?

热门文章

  1. linux内核编译练习
  2. 漫谈ERP实施服务的三种境界
  3. 数字资产云交易所搭建开发平台,云交易的优势在哪?
  4. Maven 项目模板
  5. [SpringBoot]全局异常处理
  6. Yii2与Yii1的模块中Layout使用区别
  7. 使用OPATCH_DEBUG环境变量调试Opatch工具
  8. SVN:服务器资源删掉,本地添加时和删掉的名字同名出现One or more files are in a conflicted state....
  9. 小型企业网站的架构 安全配置与防护
  10. 简单创建序列和触发器示例