同一個ASP.NET MVC 4網站,同一個郵件發送代碼。從AccountController發送電子郵件不再適用於其他所有控制器。郵箱不可用。服務器的迴應是:5.7.1無法中繼
下面是我從的AccountController行動得到錯誤:
Cannot send e-mail from [email protected] to [email protected]
Exception: Mailbox unavailable. The server response was: 5.7.1 Unable to relay.
mail.domain.com, SMTPSVC/mail.domain.com, 25,
我應該怎麼檢查?它工作多年,但最近的Windows Server 2008/Exchange 2010更新不再有效。
MailMessage message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body,
IsBodyHtml = isHtml
};
try
{
smtpClient.Send(message);
string errorMsg = "Sending e-mail from " + fromAddress.Address + " to " + originalAddresses[i];
errorMsg += Environment.NewLine;
errorMsg += smtpClient.Host + ", " + smtpClient.TargetName + ", " + smtpClient.Port + ", " + smtpClient.ClientCertificates + ", " + smtpClient.EnableSsl + ", " + smtpClient.UseDefaultCredentials + ", " + smtpClient.Timeout;
sw.WriteLine(errorMsg)
}
catch (Exception ex)
{
string errorMsg = "Cannot send e-mail from " + fromAddress.Address + " to " + originalAddresses[i] + ", " + "Exception: " + ex.Message +
(ex.InnerException != null ? ", " + ex.InnerException.Message : string.Empty);
errorMsg += Environment.NewLine;
errorMsg += smtpClient.Host + ", " + smtpClient.TargetName + ", " + smtpClient.Port + ", " + smtpClient.ClientCertificates + ", " + smtpClient.EnableSsl + ", " + smtpClient.UseDefaultCredentials + ", " + smtpClient.Timeout;
sw.WriteLine(errorMsg);
return false;
}
任何想法我應該檢查什麼? AccountController有什麼特別的我應該關心的?控制器操作屬性[RequireHttps]
是否涉及一些?
謝謝。
EDIT1:
這是我們的Exchange 2010中設置(請注意,我們可以從其他ASP.NET MVC控制器發送相同電子郵件):
EDIT2:
我錯了,問題不是ASP.NET M VC控制器相關但與電子郵件地址域相關。我發現,我們所有時間都包含一個不屬於我們公司域名(外部互聯網)的電子郵件地址,我們會得到上述錯誤。所以現在的問題是:爲什麼Exchange 2010接收連接器現在無法將電子郵件通知發送到外部Internet?
是不是隻是您可能需要使用SMTP服務器進行身份驗證?由於您試圖將郵件發送到不同的域(domain.com!= microsoft.com)? – kayess
檢查IIS管理器上的中繼限制設置=>默認SMTP虛擬服務器=>屬性=>訪問=>中繼限制,在那裏添加您的公共IP地址,然後在身份驗證訪問控制設置中標記匿名訪問和集成Windows身份驗證。同時檢查用於發送郵件的現有'NetworkCredential'。 –
@ kayess:我們確實從所有其他控制器發送併發送了電子郵件。 – abenci