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服务器错误的时候,能够快速解决问题。
下一篇: 改写函数实现PHP二维/三维数组转字符串