2011-06-22 61 views
0

C#SMTP虛擬服務器不發送郵件。這裏是代碼:C#SMTP虛擬服務器不發送郵件

public static void SendEmail(string _FromEmail, string _ToEmail, string _Subject, string _EmailBody) 
{ 

    // setup email header . 
    SmtpMail.SmtpServer = "127.0.0.1"; 
    MailMessage _MailMessage = new MailMessage(); 

    _MailMessage.From = _FromEmail; 
    _MailMessage.To = _ToEmail; 
    _MailMessage.Subject = _Subject; 
    _MailMessage.Body = _EmailBody; 

    try 
    { 
     SmtpMail.Send(_MailMessage); 
    } 
    catch (Exception ex) 
    { 
     if (ex.InnerException != null) 
     { 
      String str = ex.InnerException.ToString(); 

     } 
    } 
+0

我有以下異常:我有以下異常:System.Reflection.TargetInvocationException:異常已被調用的目標引發。 ---> System.Runtime.InteropServices.COMException(0x8004020F):服務器拒絕了一個或多個收件人地址。服務器響應如下:550 5.7.1無法中繼[email protected] –

+0

---內部異常堆棧跟蹤結束---在System.RuntimeType.InvokeDispMethod(String name,BindingFlags invokeAttr,Object target,Object [] args,Boolean [] byrefModifiers,Int32 culture,String [] namedParameters)在System.RuntimeType.InvokeMember(String name,BindingFlags bindingFlags,Binder binder,Object target,Object [] providedArgs,ParameterModifier []修飾符,CultureInfo culture,String [] namedParams)在System.Type.InvokeMember(字符串名稱,BindingFlags –

+0

在訪問>中繼虛擬Smpt服務器本質我檢查「所有除了下面的列表」,並將此列表保留爲空 –

回答

1

這是一個Interop異常,因爲.NET代碼依賴於Interop(erability)服務,非託管的東西。然而,該消息非常清晰,服務器無法中繼,因爲它已被配置爲拒絕中繼電子郵件。

很多年前,這不是一個問題,你幾乎可以使用任何公共SMTP服務器發送電子郵件。隨着垃圾郵件的出現,整個遊戲都發生了變化,現在在大多數服務器中繼被禁用,並且您的郵件發送請求被拒絕。

你在這裏需要什麼,以便它不拒絕你的郵件,是驗證你的請求(帳戶/用戶和密碼在該服務器上)。它必須是該SMTP服務器已知的有效用戶名&密碼組合。您可以通過在.Credentials屬性中設置這些內容(對不起)來做到這一點。另請參閱UseDefaultCredentials屬性,如果您設置了憑據,則需確保UseDefaultCredentials爲false。

+0

現在的郵件發送,但它仍然在裏面:C:\ Inetpub \ mailroot \隊列 –

+0

從哪裏我可以獲取UseDefaultCredentials嗎? –

0

如果錯誤是這樣的:

550 5.7.1無法中繼的[email protected]

那麼你的SMTP服務器無法發送到該郵箱地址。使用不同的SMTP服務器或將其配置爲轉發到Internet。本地的可能只會發送到您自己的域名上的地址。如果這是一個SMTP服務器配置問題,你可能會有更多的運氣詢問超級用戶。

相關問題