2012-04-23 103 views
4

我已經寫了ASP.Net代碼發送郵件從domain1.com郵件帳戶,如[email protected]郵件。此代碼工作正常,否則郵件去。但是當在domain2.com上執行相同的代碼時,即使使用正確的userid-pwd,它也會提供以下錯誤:System.Net.Mail.SmtpFailedRecipientException:郵箱名稱不允許

System.Net.Mail.SmtpFailedRecipientException:不允許使用郵箱名稱。服務器的迴應是:對不起,該域不在我的允許rcpthosts列表(#5.7.1)在System.Net.Mail.SmtpClient.Send(MailMessage消息)

有什麼辦法解決這個問題嗎?

如果我們必須在允許的rcphosts列表中添加此域,那該怎麼做?

編寫的代碼是這樣的:

MailMessage message; 
bool success; 
message = new MailMessage(from, to); 
Attachment file; 
SmtpClient lclient; 


lclient = new SmtpClient("mail.domain1.com", 587); 
lclient.EnableSsl = false; 

message.Body = body; 
message.BodyEncoding = System.Text.Encoding.UTF8; 
message.IsBodyHtml = true; 
message.Subject = subject; 
message.SubjectEncoding = System.Text.Encoding.UTF8; 

lclient.SendCompleted += new 
SendCompletedEventHandler(SendCompletedCallback); 
lclient.UseDefaultCredentials = false; 
lclient.Credentials = new NetworkCredential(userID, password); 
try 
{ 

    lclient.Send(message); 
    success = true; 
    if (message != null) 
     message.Dispose(); 
    success = true; 
    return (success); 
} 
catch (Exception ex) 
{ 
    //... 
} 

感謝

回答

4

的代碼工作正常。該錯誤是來自SMTP服務器的拒絕。看起來,服務器從Domain1訪問時,允許您通過它轉發郵件。當從Domain2訪問時,它不會。更改這將是SMTP服務器上的配置。

請注意,這是SMTP服務的常見做法。他們通常不允許任何人通過他們發送郵件到任何地址。 (這會讓他們對垃圾郵件發送者和其他這樣的有害活動開放。)因此,如果您嘗試從Domain1之外訪問Domain1的SMTP服務,則可能只是拒絕該服務。

+0

謝謝,大衛。可以改變這個配置嗎?或者也許我們只需要改變一下設計來適應這一點。 – 2012-04-24 08:24:54

+0

@AnuradhaKulkarni:你也許能夠改變配置,但這確實超出了我可以提供幫助的範圍。這是服務器管理,完全取決於您使用的SMTP服務。如果您需要重新設計一點,您可以嘗試在允許使用電子郵件的主機上運行Web服務,並讓其他實例訪問該服務來發送郵件,而不是直接發送郵件。 – David 2012-04-24 12:37:07

相關問題