日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

SmtpClient 身份验证失败(authentication failed) 的原因分析

發(fā)布時(shí)間:2024/6/5 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SmtpClient 身份验证失败(authentication failed) 的原因分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近,收到幾位網(wǎng)友的咨詢,都說使用 SmtpClient 通過 139,189,qq 郵箱的SMTP服務(wù),發(fā)送郵件時(shí),都不成功,返回的錯(cuò)誤是 “身份驗(yàn)證失敗”,而同樣的情況,使用outlook express, foxmail 則可以正常發(fā)送。

為了搞清原因,我自己測試了一把,問題確實(shí)如此。

據(jù)此,可以判斷,問題應(yīng)該是出在 SmtpClient 本身了。而且,既然是 “身份驗(yàn)證失敗” 的錯(cuò)誤,那就應(yīng)該出在 身份驗(yàn)證的環(huán)節(jié)了。為了徹底搞清楚這個(gè)問題, 我使用了抓取網(wǎng)絡(luò)封包的方法, 分別獲取了使用 outlook express 和 SmtpClient發(fā)送郵件時(shí),各自的交互情況,抓包工具,使用的是大名鼎鼎的 Wireshark,此工具的使用,我就不做說明了,有興趣的朋友自己去官方網(wǎng)站看吧。

下面的2附圖,是2個(gè)過程的抓包情況:

?

?

下面,我們來對(duì)比分析,為什么 SmtpClient 會(huì)失敗。

對(duì)于圖一(outlook) 的情況,我們看到第 8 行,是 Authentication successful ,說明是認(rèn)證成功的。

兩幅圖上的 第 3 行, 我標(biāo)記了一個(gè) 紅色的圓圈,這句就是認(rèn)證開始的過程,下面把2種情況的認(rèn)證過程都列出來:

(一) outlook express 的情況

行號(hào)發(fā)送方命令
3outlook expressAUTH LOGIN
4SMTP服務(wù)器334 VXNlcm5hbwu6 (命令的含義是 user)
5outlook express隱藏部分,內(nèi)容是 郵箱帳戶的base64編碼
6SMTP服務(wù)器334 UGFzc3dvcmQ6 (命令的含義是 password)
7outlook express隱藏部分,內(nèi)容是 郵箱密碼的base64編碼
8SMTP235 Authentication successful 認(rèn)證成功,下面就是發(fā)送郵件的內(nèi)容了

(二) smtpclient 的情況

行號(hào)發(fā)送方命令
3smtpclientAUTH login 隱藏部分(內(nèi)容是 郵箱帳號(hào)的 base64編碼)
4SMTP服務(wù)器334 VXNlcm5hbwu6 (命令的含義是 user)
5smtpclient隱藏部分,內(nèi)容是郵箱密碼的base64編碼,而此處實(shí)際需要的是郵箱帳號(hào)的base64編碼
6SMTP服務(wù)器334 UGFzc3dvcmQ6 (命令的含義是 password)
7smtpclient因?yàn)閟mtpclient的認(rèn)證過程已經(jīng)結(jié)束了,但是卻收到了SMTP服務(wù)器的password指令,所以smtpclient就認(rèn)為是認(rèn)證失敗了

通過上面的對(duì)比,我們可以很清楚的發(fā)現(xiàn),smtpclient 在發(fā)送 AUTH LOGIN 命令的同時(shí),把 郵箱帳號(hào) 也一起發(fā)送了過去。通常情況下,SMTP服務(wù)器是可以正確處理這個(gè)命令的,這樣就順利完成了對(duì)應(yīng)于 outlook express 的行 3,4,5;然而,139,189和QQ的郵箱SMTP服務(wù)器,并不能正確識(shí)別這個(gè)命令,而是將 AUTH LOGIN 后面的內(nèi)容丟棄了,從而造成了命令對(duì)應(yīng)的錯(cuò)位,這也就是導(dǎo)致smtpclient認(rèn)證失敗的關(guān)鍵。

.NET 中的 SmtpClient 的認(rèn)證方式,為什么不采用 outlook express 的方式,而采用了這種貌似簡潔的方式,究其原因,就不得而知了(莫非是Microsoft的開發(fā)人員為了偷懶? )

?

園子里,有不少M(fèi)VP和其他的牛人,希望能給個(gè)幫助,或者能跟微軟的人員提一下這個(gè)問題,嘿嘿

轉(zhuǎn)載于:https://www.cnblogs.com/sjcatsoft/archive/2009/06/06/1497772.html

總結(jié)

以上是生活随笔為你收集整理的SmtpClient 身份验证失败(authentication failed) 的原因分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。