2012-02-28 41 views
3

我有一個我指向我公司的郵件服務器的SmtpClient。我能夠在該域名上成功發送電子郵件地址。SmtpClient - 發送到不同的域

但是,我需要爲應用的用戶執行密碼重置和通知。這些用戶使用自己的電子郵件地址(多個不同的域)註冊。

如何發送電子郵件給不同域的用戶?每次嘗試(使用我的live.ca電子郵件)時,出現以下錯誤:

SmtpFailedRecipientsException - 郵箱不可用。服務器響應爲:5.7.1無法中繼

C#代碼

SmtpClient mailClient = new SmtpClient(); 
MailMessage email = new MailMessage 
{ 
    Subject = "Testing Mail", 
    Body = "Testing Mail", 
    From = new MailAddress("[email protected]") 
}; 
email.To.Add(new MailAddress("[email protected]")); 
mailClient.Send(email); 

的Web.config代碼

<system.net> 
<mailSettings> 
    <smtp> 
    <network host="mail.myCompany.com" port="25" userName="[email protected]" password="myPassword" defaultCredentials="false"/> 
    </smtp> 
</mailSettings> 

更新:

我得到它的工作使用以下方法:

1)的Web.config

<network host="mail.myCompany.com" port="25" userName="myNetworkUsername" password="myPassword" defaultCredentials="false" /> 

2)C#代碼

mailClient.Credentials = new NetworkCredential("myNetworkUsername", "myPassword"); 
// or 
mailClient.Credentials = CredentialCache.DefaultNetworkCredentials; 

第二行使用的是誰的憑據登錄了。它爲本地主機工作,但不是當我部署它。

我正在考慮創建一個默認帳戶來處理應用程序的郵件並將用戶名/密碼放在網絡配置中,但這看起來並不像最安全的做法。我仍在研究替代方案。

更新:

的代碼停止時,我公司跳槽我們的ISP邵氏工作。我們認爲肖可能會阻止我們的Exchange Server上的端口。

+2

你可能想看看這個問題:http://stackoverflow.com/questions/444210/how-do- i-send-emails-outside-my-domain-with-exchange-2007-and-c-sharp – 2012-02-28 01:16:31

+0

這不是你的代碼的問題,它是你公司的SMTP服務器的限制。要麼讓他們放鬆你可以發送的域名,要麼使用不同的服務器。 – Joe 2012-02-28 01:18:29

+0

只是一個猜測,但嘗試使用端口587. – 2012-02-28 01:37:18

回答

0

這裏有一個解釋域之外發送電子郵件使用端口587的文章:http://mostlygeek.com/tech/smtp-on-port-587

+0

這沒有奏效,仍然有同樣的錯誤。 – Lifes 2012-02-28 02:02:20

+0

嗯。我只是在我的一個網站上試過這個,並解決了類似的問題。我能看到的唯一區別是在SMTP元素中指定了「from」: 2012-02-28 03:01:10

+0

剛剛嘗試過並得到了一個SMTP異常:SMTP服務器需要安全連接或客戶端未通過身份驗證。服務器響應是:5.7.1客戶端未通過身份驗證。感謝您的意見,我現在要嘗試其他建議。 – Lifes 2012-02-29 01:00:54