2011-09-06 88 views
2

我有一個C#電子郵件應用程序運行在服務器上。啓動後,它會發送一封電子郵件,然後消失。它的大部分工作正常,但每隔一段時間就會給下面的錯誤時間:間歇性「服務器響應是:5.7.1無法中繼」錯誤

System.Net.Mail.SmtpFailedRecipientException: Mailbox unavailable. The server response was: 5.7.1 Unable to relay for [email protected] 
    at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception) 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 
    at AppEmail.clsEmailMgr.SendEmail(MailMessage inMM, Int32 inTriesLimit, Int32 inSleepTime) 
    at AppEmail.clsEmailMgr.MainProcess() 

我已經看過這種類型的錯誤的其他一些帖子,但他們往往把重點放在服務器設置 - 這我認爲是正確的 - 否則這個應用程序將無法正常工作......並且大部分時間都是這樣。其他

一個注意:這個程序可以被調用多次較快,因此可以在自身不同的情況下,試圖在幾乎相同的時間發送電子郵件的情況。垃圾郵件過濾器是否可以阻止某些電子郵件發送嘗試?任何其他的想法,將不勝感激。

+0

我同意你的問題是與郵件服務器 - 而不是你的代碼。看起來像一個SMTP錯誤。 –

回答

1

根據服務器設置發生此錯誤...它不會阻止您的代碼始終工作...但它禁止發送電子郵件與發件人/從域不允許和/或發送電子郵件到域不準......這樣的「接力」的錯誤...

的提及通常,如果你問服務器從[email protected]發送一封電子郵件,服務器只爲域C設置.com然後這個錯誤出現...否則它會很容易被垃圾郵件發送者濫用(谷歌爲:垃圾郵件開放中繼)...如果你的應用程序需要做這樣的「中繼」爲合法的原因然後要求郵件服務器管理員配置郵件服務器,它允許中繼爲託管您的應用程序的計算機...

快速發送不應該是一個問題,但它可能會試圖發送垃圾郵件的負荷......因爲你不告訴任何有關單位時間的數量,這是純粹的投機行爲被視爲受感染的機器...

+0

我想我已經看到了某個特定電子郵件地址可以工作的時間,然後是另外一次。鑑於我更傾向於垃圾郵件的可能性。我沒有每個發送的郵件的日誌,所以我不知道他們發送的時間到底有多接近,但是常規電子郵件發送時間間隔爲1秒,並且可能發送一封或兩封郵件的時間少於一秒分開。 – Clinemi

+0

如果同一個電子郵件地址有時真的有效,有時候沒有,那麼除了垃圾郵件防護之外,還有一種可能性,即您正在處理一個「Exchange羣集」,它的配置有些不一致......儘管我也會傾向於垃圾郵件防護... – Yahia

0

我遇到了類似的間歇性問題(無法中繼)與我的應用程序之一。我驗證了SMTP主機日誌,並記錄了出現「Auth login」失敗的錯誤。最後,我們嘗試將UPN(通用主體名稱)格式的SMTP憑證用戶名傳遞給SMTP客戶端。

示例:使用[email protected]而不是域/用戶名

這將給予一致的結果。

相關問題