SMTP客户端未通过身份验证等多种错误解决方案分享

最近在做邮件发送接口 把遇到的问题和解决方法告诉大家  希望对了解邮件的人有所帮助

原程序部分代码如下

 //设置邮件信息 发件人地址、收件人地址、标题、主题
 MailMessage mail = new MailMessage("xxxxxxx@sina.com", "zzzzzzz@sina.com", "标题", "主题");
 //设置邮件主题格式
 mail.BodyEncoding = Encoding.UTF8;
 //设置邮件主体格式是否为 html 格式
 mail.IsBodyHtml = false;

 //验证邮箱用户名 密码
 NetworkCredential work = new NetworkCredential("xxxxxxx", "pwd");
  //验证 用户名 密码
 client.Credentials = work;

 //设置邮箱smtp服务器 端口
 SmtpClient client = new SmtpClient("smtp.sina.com");

 //是否请求一起发送
 client.UseDefaultCredentials = false;
 //设置邮件发送格式
 client.DeliveryMethod = SmtpDeliveryMethod.Network;
 //安全连接设置
 client.EnableSsl = false;

 client.Send(mail);

错误一:“/”应用程序中的服务器错误。

SMTP 服务器要求安全连接或客户端未通过身份验证。 服务器响应为: 5.7.1 Client was not authenticated
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Net.Mail.SmtpException: SMTP 服务器要求安全连接或客户端未通过身份验证。 服务器响应为: 5.7.1 Client was not authenticated

解决方法  :

 //设置邮箱smtp服务器 端口
 SmtpClient client = new SmtpClient("smtp.sina.com",587);

解决说明:我加上了端口号,587属于发送邮件端口   一般出现此错误会出现在你设置的163的接受者时发生   QQ的没有问题!

错误二 :“/”应用程序中的服务器错误。

服务器不支持安全连接。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Net.Mail.SmtpException: 服务器不支持安全连接。   我将 //安全连接设置   client.EnableSsl = True;后发生的错误

解决方法 :方法一 设置成“client.EnableSsl = false ”或去掉这句代码
                        方法二 开启安全连接服务

错误三:SMTP 服务器要求安全连接或客户端未通过身份验证。 服务器响应为: Authentication required 
堆栈跟踪:   [SmtpException: SMTP 服务器要求安全连接或客户端未通过身份验证。 服务器响应为: Authentication required]

解决方法:
client.EnableSsl = false; 改为 client.EnableSsl = true;  但是这样该后可能会出现“错误二”的提示,所以要解决
这个的话 首先保证服务器是支持安全连接的

错误四:
SMTP 服务器要求安全连接或客户端未通过身份验证。 服务器响应为: 5.7.0 Must issue a STARTTLS command first. 9sm5225813ywf.35

解决方法:sina要求用ssl连接 可以改一下true

万能解决方法:
1、POP3和SMTP服务器要填正确
2、服务器的端口要正确
3、我的服务器要求身份认证
4、发送邮件的用户名和密码要正确

//设置邮箱smtp服务器 端口
SmtpClient client = new SmtpClient("smtp.sina.com",587); 就可以了
163的最固执了!需要注意点 QQ最好过!呵呵

有些时候邮件被退信的原因  提供以下解决方法:

一、FOXMAIL发送邮件常见出错代码: 

问题:the server says:550 relaying mail to <> is not allowed  
问题:The server says:550 <>... relaying denied  
问题:the server says:550 5.7.1 relaying not permitted:
解答:使用某些Smtp服务器时,限制了收件人的地址,只能换一个Smtp服务器。

问题:The server says:550 <>:local user only  
问题:The server says:550 <>:Invalid User  
问题:The server says:550 Invalid recipient  
解答:使用163.net,163.com,yeah.net和netease.com之类的Smtp服务器时,只能用自身的信箱发信,所以要在Outlook Express的“帐户属性”中的“个人信息”里面填写正确的邮件地址。

问题:the server says:551 delivery not allowed to non-local recipient  
问题:The server says:553 Relay restriction.  
问题:The server says:553 From <>, message blocked.  
问题:The server says:553 sorry,you are not allow to use this SMTP to relay your eami  
问题:The server says:553 sorry, that domain isn&apost in my list of allowed rcpthosts  
解答:使用21cn.com,china.com,371.net,sina.com等大多数信箱的smtp服务器时,只能用自身的信箱发信,所以要在Outlook Express的“帐户属性”中的“个人信息”里面填写正确的邮件地址。

问题:The server says:505 client was not authenticated  
问题:The server says:553 authentication is required to send mail as <>  
解答:使用263.net和sohu.com的Smtp服务器时,不但要用自身的邮箱发信,而且要加入身份验证,所以即要在“个人信息”中填写正确邮箱地址,又要选中“SMTP服务器需要认证”。

问题:The server says:535 Error:authenticatin failed  
问题:The server says:535 Authentication unsuccessful  
问题:The server says:452 Insufficient system storage  
解答:在使用Esmtp认证的过程中出错,检查一下Esmtp设置,多试几次。

问题:The server says:553 <>...domain name required  
问题:The server says:550 Unable to relay for ...  
解答:多出现在用Wingate代理服务器发送邮件时。虽然在Wingate中“POP3 邮箱帐号”要使用“用户名#POP3地址”的格式,但在“帐户属性”中的“个人信息”中还是要填写一般的格式。

问题:The server says:553 mailbox name not allowed  
解答:收件人邮箱地址不允许,需检查收件人地址是否正确。

问题:the server says:553 sorry, your envelop sender is in my badmailfrom list  
解答:服务器限制了收件人的地址,只能换一个smtp服务器发信。

问题:the server says:554 Transaction failed  
问题:The server says:451 Requested action aborted,errno=28  
解答:传输失败,检查网络问题。

问题:the server says:503 error:needmail command  
问题:The server says:503 need mail before RCPT.  
问题:The server says:503 Bad sequence of commands  
解答:消息命令顺序出错,一般出现在其他错误之后,先检查之前出现的错误提示。

问题:The Server says:501 syntax.helo hostname  
问题:The server says:501 Invalid domain name  
问题:The server says:502 unimplemented command  
问题:the server says:503 5.0.0 polite people say HELO first  
问题:The server says:533 relay restriction  
问题:The server says:544 <>:Recipient address rejected: Relay access denied  
解答:传输中的语法错误,原因不明。

二、OUTLOOK发送邮件常见出错代码:

0x800C013E 可能是 Folders.dbx 档案属性错误或损坏.
0x800CCC00 身份验证(Authentication)未载入
0x800CCC01 认证(Certificate)内容错误
0x800CCC02 认证日期错误
0x800CCC03 使用者已联机
0x800CCC05 未联机到服务器
0x800CCC0A 邮线下载未完成
0x800CCC0B 服务器忙碌中
0x800CCC0D 找不到主机(检查你的SMTP服务器是不是设错,亦可能是对方Server 的问题,例如 Mail Server 没有开机、对方的DNS 服务器死掉了等等)
0x800CCC0E 联机到服务器失败,无法与主机建立联机。可能对方主机正在维护中、或是网络联机品质不好、服务器关机、邮件服务器尚未启动等等,等一段时间再试。
0x800CCC0F 服务器结束联机(对方服务器负荷过重、网络传输壅塞易造成此现象,可以试着增加你联机逾时的等候时间试试看,或是换一联机品质较佳的 ISP)
0x800CCC10 服务器无法辨认此邮件地址
0x800CCC11 服务器无法辨认的 Mailing list
0x800CCC12 无法传送 Winsock request
0x800CCC13 无法接收 Winsock reply
0x800CCC14 无法起始 Winsock
0x800CCC15 无法开启 Windows Socket
0x800CCC16 无法辨认使用者账号,使用者账号错误
0x800CCC17 使用者中断操作
0x800CCC18 登入失败(例如:不需要安全密码认证登入,但却设了安全密码认证登入)
0x800CCC19 作业逾时
0x800CCC1A 无法以 SSL 建立联机

Winsock 错误

0x800CCC40 Network subsystem 无法使用
0x800CCC41 Windows Sockets 不支持此应用程序
0x800CCC43 Bad address.
0x800CCC44 Windows Sockets 无法加载
0x800CCC45 Operation now in progress..

SMTP 错误

0x800CCC60 不合法的回应
0x800CCC61 不明的错误代码
0x800CCC62 收到语法错误
0x800CCC63 语法参数不正确
0x800CCC64 指令不完整
0x800CCC65 不正确的指令序列
0x800CCC66 指令不完整
0x800CCC67 没有这个指令
0x800CCC68 邮件信箱被锁住或忙碌中
0x800CCC69 找不到邮件信箱
0x800CCC6A 处理要求错误
0x800CCC6B 邮件信箱不在此服务器上
0x800CCC6C 已无空间储存邮件
0x800CCC6D 已超过限制的储存容可舷?
0x800CCC6E 不合法的邮件信箱名称
0x800CCC6F Transaction error,出现这讯息,可能是服务器不接受你的邮件,请跟你的 ISP 联络。
0x800CCC78 不明的寄件者,或邮件回复(reply-to)地址不正确
0x800CCC79 收件者被服务器拒绝
(Relay Denied:最常发生于 Outlook Express 的 SMTP 设定不正确,请使用提供你联机服务的ISP公司之SMTP服务器来寄信,)
0x800CCC7A 没有指定寄件者
0x800CCC7B 没有指定收件者

POP3 错误

0x800CCC90 登入邮件服务器发生错误,检查一下你是不是有使用该服务器的权限。或者:不需要安全密码认证登入,但却设了安全密码认证登入
0x800CCC91 使用者名称错误或找不到此使用者
0x800CCC92 账号、密码错误
0x800CCC93 无法解释响应
0x800CCC94 需要指令
0x800CCC95 服务器上已无邮件
0x800CCC96 没有邮件标记为要下载
0x800CCC97 Message ID 超出范围

NNTP 错误

0x800CCCA0 新闻服务器响应错误,可能你没有拥有可使用该服务器的权限。
0x800CCCA1 读取新闻群组失败
0x800CCCA2 要求服务器邮件清单失败
0x800CCCA3 无法显示清单
0x800CCCA4 无法开启群组
0x800CCCA5 服务器无此群组
0x800CCCA6 邮件不在服务器上
0x800CCCA7 找不到件标题
0x800CCCA8 找不到邮件本文
0x800CCCA9 无法发布到服务器上
0x800CCCAA 无法开启下封邮件
0x800CCCAB 无法显示日期
0x800CCCAC 无法显示标题
0x800CCCAD 无法显示 MIME 标题
0x800CCCAE 使用者名称或密码不正确

RAS 错误 
0x800CCCC2 未安装拨号网络
0x800CCCC3 找不到拨号网络
0x800CCCC4 拨号网络错误
0x800CCCC5 Connectoid 坏或遗失
0x800CCCC6 取得拨号设定时错误

IMAP 错误 
0x800CCCD1 登入失败
0x800CCCD2 Message tagged
0x800CCCD3 Invalid response to request.
0x800CCCD4 语法错误
0x800CCCD5 不是 IMAP 服务器
0x800CCCD6 Buffer 已超过上限
0x800CCCD7 Recovery error
0x800CCCD8 数据不完整
0x800CCCD9 联机被拒
0x800CCCDA 不明的回应
0x800CCCDB User ID 已更改
0x800CCCDC User ID 指令失败
0x800CCCDD Unexpected disconnect
0x800CCCDE Invalid server state
0x800CCCDF 无法认证客户端

三、退信分析

每一套邮件系统都有自己固定的退信格式,为了方便,我们只列举几种常见的退信通知,退信的前半部分是固定的格式,比如:尊敬的XX邮箱用户: 我们很抱歉的通知您,您的这封邮件不能投递到以下一个或多个地址中去。可能的原因有……
       其实真正的退信原因全部在退信的后半部分的“服务器返回信息为:”里!常见的有:
1. unknow user---没有这个用户,很多时候,客户在写邮件的时候,输错了对方的email地址帐号,就导致这样的问题。(当然也有个别的特例,比如一些反垃圾邮件组织封杀了邮箱的IP的时候,退信上也会显示unknow user,但是不多见)
2.not found host---找不到主机。这种情况一般是对方的域名解析有问题。如果是发给123@abc.com这个信箱,收到这样的退信,很可能就是由于DNS无法将abc.com这个域名解析到响应的IP上!
3. loops back to myself—域没有激活!激活域是开通邮箱的一部分,如果发信给没有激活域的邮箱会有这样的退信。但是这种情况相对于其他的常见退信情况还是很少见到。
4. I don't like spam—IP被对方封杀。需要说明的是目前国际上存在很多“反垃圾邮件组织”,这些组织对垃圾源的评定也不一样,有些组织甚至将全部中国电信的IP封杀了!遇到这样的情况,我们会和这个组织联系,请求其解除对我们的封杀。但是这个主动权就不在我们这里了。
5.User quota has been reached---配额(空间)已满。

以上就是本文的全部内容,希望以后在遇到SMTP服务器错误的时候,能够快速解决问题。

(0)

相关推荐

  • php tp验证表单与自动填充函数代码

    复制代码 代码如下: <?php class FormModel extends Model { // 自动验证设置 /* * 一:自动验证 自动验证的定义是这样的:array(field,rule,message,condition,type,when,params) field:代表是数据库的字段名: rule:代表是规则: 它的值要看type的类型而定: 如果是condition 是function(callback),rule是一个函数名 condition 是in,rule是一个数组

  • PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)

    smtp.php <?phpclass smtp { /* Public Variables */ var $smtp_port; var $time_out; var $host_name; var $log_file; var $relay_host; var $debug; var $auth; var $user; var $pass; /* Private Variables */ var $sock; /* Constractor */ function smtp($relay_ho

  • 动态表单验证的操作方法和TP框架里面的ajax表单验证

    动态验证的操作方法 function yz() { if(empty($_POST)) { $this->display(); } else { $db=D("Info"); $shu=array( array("Code","require","代号不能为空",0,"regex",3), ); if(!$db->validate($shu)->create()) { echo $db-&

  • Linux编译安装vsftpd服务器(本地用户验证方式)

    Linux vsftpd编译安装和配置允许本地用户登录FTP 1.下载vsftpd源码 wget https://security.appspot.com/downloads/vsftpd-2.3.4.tar.gz 2.编译vsftpd源码 64位的系统编译之前先要执行cp /lib64/libcap.so.1 /lib/libcap.so.1命令: 复制代码 代码如下: tar xzvf vsftpd-2.3.4.tar.gz cd vsftpd-2.3.4 make make install

  • php基于表单密码验证与HTTP验证用法实例

    本文实例讲述了php基于表单密码验证与HTTP验证用法.分享给大家供大家参考.具体分析如下: PHP 的 HTTP 认证机制仅在 PHP 以 Apache 模块方式运行时才有效,因此该功能不适用于 CGI 版本.在 Apache 模块的 PHP 脚本中,可以用 header() 函数来向客户端浏览器发送"Authentication Required"信息,使其弹出一个用户名/密码输入窗口.当用户输入用户名和密码后,包含有 URL 的 PHP 脚本将会加上预定义变量 PHP_AUTH_

  • C# HttpClient Cookie验证解决方法

    自实现的cookie 验证,远程取值的例子 以下代码配合HttpClient使用可以实现跨域(cookie的读写) //验证 复制代码 代码如下: HttpClient httpClient = new HttpClient(url, null, true); httpClient.PostingData.Add(key,value);//登录用户名 httpClient.PostingData.Add(key,value);//密码 string str = httpClient.GetStr

  • ThinkPHP框架表单验证操作方法

    自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.分为静态验证和动态验证. 一.静态验证 (1)在Home/Controller/路径下新建Index控制器.IndexController IndexController.class.php页面 注意:静态定义方式因为必须定义模型类,所以只能用D函数实例化模型 create方法是对表单提交的POST数据进行自动验证 <?php namespace Home\Controller; u

  • php通过smtp邮件验证登陆的方法

    本文实例讲述了php通过smtp邮件验证登陆的方法.分享给大家供大家参考,具体如下: 内网的系统为了统一账号,都采用用邮件账号登陆的方式,所以有了以下程序 /** * 通过邮件 验证登陆 * 这里要明白的是用户名是 带域名的:aaa@163.com */ function valideEmailLogin($user, $pass, $smtp_server= 'smtp.163.com', $port=25) { $handle = fsockopen($smtp_server, $port)

  • SMTP客户端未通过身份验证等多种错误解决方案分享

    最近在做邮件发送接口 把遇到的问题和解决方法告诉大家  希望对了解邮件的人有所帮助 原程序部分代码如下 //设置邮件信息 发件人地址.收件人地址.标题.主题 MailMessage mail = new MailMessage("xxxxxxx@sina.com", "zzzzzzz@sina.com", "标题", "主题"); //设置邮件主题格式 mail.BodyEncoding = Encoding.UTF8; //

  • IIS 各种身份验证详细测试第1/2页

    一. IIS的身份验证概述.... 3 1. 匿名访问... 3 2. 集成windows身份验证... 3 2.1. NTLM验证... 3 2.2. Kerberos验证... 3 3. 基本身份验证... 4 二. 匿名访问.... 4 三. Windows集成验证.... 5 1. NTLM验证过程... 5 1.1. 客户端选择NTLM方式... 5 1.2. 服务端返回质询码... 5 1.3. 客户端加密质询码再次发送请求... 5 1.4. 服务端验证客户端用户和密码... 5

  • JAVA中的Token 基于Token的身份验证实例

    最近在做项目开始,涉及到服务器与安卓之间的接口开发,在此开发过程中发现了安卓与一般浏览器不同,安卓在每次发送请求的时候并不会带上上一次请求的SessionId,导致服务器每次接收安卓发送的请求访问时都新建一个Session进行处理,无法通过传统的绑定Session来进行保持登录状态和通讯状态. 基于传统方法无法判断安卓的每次请求访问状态,故查询资料了解到Token,特殊的身份证验证.以下是网上搜寻资料所得,作为学习总结资料. 令牌是一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧.to

  • asp.net中的窗体身份验证(最简单篇)

    在创建网站中,常常会使用到身份验证.asp.net中内置了几种身份验证的方式,如Windows.Froms.Passport等.这几种身份验证的方式各有不同.一般来说,网站的身份验证方式都会经过以下几个步骤: 1.输入用户名和密码,单击确定按钮. 2.在后台判断用户名和密码是否正确,如果错误返回提示:如果正确,进入可访问的页面. 在ASP时代,通常都会在验证用户名和密码是否匹配之后,创建一个Session,然后在每个需要验证的页面中判断Session是否存在,如果存在,则显示页面内容:如果不存在

  • asp.net core3.1cookie和jwt混合认证授权实现多种身份验证方案

    目录 认证授权 身份认证 授权 默认授权 选择授权 总结 开发了一个公司内部系统,使用asp.net core 3.1.在开发用户认证授权使用的是简单的cookie认证方式,然后开发好了要写几个接口给其它系统调用数据.并且只是几个简单的接口不准备再重新部署一个站点,所以就直接在MVC的项目里面加了一个API区域用来写接口.这时候因为是接口所以就不能用cookie方式进行认证,得加一个jwt认证,采用多种身份验证方案来进行认证授权. 认证授权 身份验证是确定用户身份的过程. 授权是确定用户是否有权

  • Python中WebService客户端接口调用及身份验证的问题

    目录 WebService客户端接口调用及身份验证问题 Python调用WebService接口踩坑记录 1.报错信息 2.解决方法 WebService客户端接口调用及身份验证问题 最近由于业务需求,需要实现python Webservice的服务以及接口调用. 服务端代码可自行百度,这里主要描述客户端以及我遇到的HTTP身份验证的问题,不多说直接上代码. from suds.client import Client from suds.transport.http import HttpAu

  • 详解ASP.NET七大身份验证方式以及解决方案

    在B/S系统开发中,经常需要使用"身份验证".因为web应用程序非常特殊,和传统的C/S程序不同,默认情况下(不采用任何身份验证方式和权限控制手段),当你的程序在互联网/局域网上公开后,任何人都能够访问你的web应用程序的资源,这样很难保障应用程序安全性.通俗点来说:对于大多数的内部系统.业务支撑平台等而言,用户必须登录,否则无法访问和操作任何页面.而对于互联网(网站)而言,又有些差异,因为通常网站的大部分页面和信息都是对外公开的,只有涉及到注册用户个人信息的操作,或者网站的后台管理等

  • asp.net中几种常用的身份验证方法总结

    前言 在B/S系统开发中,经常需要使用"身份验证".因为web应用程序非常特殊,和传统的C/S程序不同,默认情况下(不采用任何身份验证方式和权限控制手段),当你的程序在互联网/局域网上公开后,任何人都能够访问你的web应用程序的资源,这样很难保障应用程序安全性.通俗点来说:对于大多数的内部系统.业务支撑平台等而言,用户必须登录,否则无法访问和操作任何页面.而对于互联网(网站)而言,又有些差异,因为通常网站的大部分页面和信息都是对外公开的,只有涉及到注册用户个人信息的操作,或者网站的后台

  • ASP.NET Internet安全Forms身份验证方法

    本文分别以ASP.NET1.1与ASP.NET2.0在Forms 身份验证上的实现方法,以及ASP.NET2.0较上一版本有哪些改进或变化进行说明.相信读者都己经看过许多类似这样的文章,不伦是在网上或是某些专业书籍上,最近又有模式&实践小组成员发布WCF安全模型指南,可见构建网站安全总是不过时的话题,作者认为此文也绝对是您应该收藏的参考资料. ASP.NET 安全性的工作原理 网站在安全性方面有一个常见的要求:特定的页面仅允许某些成员或其他经过身份验证的用户浏览.充分利用Forms身份验证是最好

  • asp.net身份验证方式介绍

    windows身份验证: IIS根据应用程序的设置执行身份验证.要使用这种验证方式,在IIS中必须禁用匿名访问. Forms验证:用Cookie来保存用户凭证,并将 未经身份验证的用户重定向到自定义的登录页. Passport验证:通过Microsoft的集中身份验证服务执行的,他为成员站点提供单独登录 和核心配置文件服务. 一. 配置windows身份验证 1)配置IIS设置 of Dern)" alt="asp.net身份验证方式(ref:DreamSpace of Dern)&q

随机推荐