簡體   English   中英

使用SmtpClient發送電子郵件時,解決“此時不接受421連接”錯誤

[英]Troubleshooting “421 Connection not accepted at this time” error when sending email with SmtpClient

我正在嘗試使用我的isp發送4封電子郵件。 (不是JUNK MAIL,我發送到我的地址)
我從循環中逐個發送它們(因為我構建它們)。 每條消息都是50kb-80kb

 MailMessage mailmessage = new MailMessage();
 mailmessage.To.Add(to);
 mailmessage.From = new MailAddress(from, "From");
 mailmessage.IsBodyHtml = true;
 mailmessage.Priority = MailPriority.Normal;
 mailmessage.Subject = subject;
 mailmessage.Body = body;
 SmtpClient smtpclient = new SmtpClient(server, 25); //use this PORT!
 smtpclient.DeliveryMethod = SmtpDeliveryMethod.Network;
 smtpclient.Credentials = new NetworkCredential(user, pass);
 smtpclient.Send(mailmessage);

在上一條消息中,我收到此錯誤:

服務不可用,關閉傳輸通道。 服務器響應為:此時不接受連接

更新:
出現此錯誤后的某些時間,即使從Outlook Express等其他應用程序發出的電子郵件,我也無法發送任何電子郵件(使用此服務器),但出現錯誤:

出現未知錯誤。 帳戶:'MailServerAddress',服務器:'MailServerAddress'',協議:SMTP,服務器響應:'421此時不接受連接',端口:25,安全(SSL):否,服務器錯誤:421,錯誤號碼:0x800CCC67

大約一分鍾后,我可以再次發送。

始終確保您的發件人地址也是一個有效的郵箱,以便退回郵件實際上會返回給您,許多ISP完全禁止使用其他(未注冊)發件人地址。 正如其他人的評論所指出的那樣,ISP通常還會限制速率,因此您必須將發送代碼微調到ISP的期望,這可能很乏味。

一般來說,出於某種原因發送電子郵件既是藝術又是科學。 如果您嘗試將其用於生產系統,則只能建議您使用某些服務,例如SendGridMailgun 即使您的郵件服務器接受了郵件,它也可能會在另一個ISP郵件服務器上達到限制,因為大多數ISP都有一定的限制,並且電子郵件路由非常復雜。 另外,您可能會很快點擊垃圾郵件過濾器。 對於我的ISP,無論出於何種原因,自動郵件總是在googlemail中發送垃圾郵件。

為了開發,Mailgun每天免費提供200封電子郵件,這在開始時應該足夠了。 另外,SMTP是一種非常慢的協議,因此使用其HTTP接口將為您節省一些服務器時間。

我沒有完全,但在這里非常相似的問題:

SMTP發送電子郵件失敗由SmtpClinet(SmarterEmail服務器)

問題是我的本地ISP正在關閉25端口。

您是否測試了其他端口,例如587?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM