最近在做郵件發送接口 把遇到的問題和解決方法告訴大家 希望對了解郵件的人有所幫助
原程序部分代碼如下
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23//設置郵件信息 發件人地址、收件人地址、標題、主題
MailMessage mail =
new
MailMessage(
"[email protected]"
,
"[email protected]"
,
"標題"
,
"主題"
);
//設置郵件主題格式
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't 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---找不到主機。這種情況一般是對方的域名解析有問題。如果是發給[email protected]這個信箱,收到這樣的退信,很可能就是由於DNS無法將abc.com這個域名解析到響應的IP上!
3. loops back to myself—域沒有激活!激活域是開通郵箱的一部分,如果發信給沒有激活域的郵箱會有這樣的退信。但是這種情況相對於其他的常見退信情況還是很少見到。
4. I don't like spam—IP被對方封殺。需要說明的是目前國際上存在很多“反垃圾郵件組織”,這些組織對垃圾源的評定也不一樣,有些組織甚至將全部中國電信的IP封殺了!遇到這樣的情況,我們會和這個組織聯系,請求其解除對我們的封殺。但是這個主動權就不在我們這裡了。
5.User quota has been reached---配額(空間)已滿。
以上就是本文的全部內容,希望以後在遇到SMTP服務器錯誤的時候,能夠快速解決問題。