2017-06-08 87 views
0

我正在嘗試開發一個電子郵件客戶端。它發送電子郵件到指定的收件人如何在C#中設置多個SMTP電子郵件服務器的主備用服務器#

using System.Net; 
using System.Net.Mail;  


MailMessage msg; 
SmtpClient client; 
SMTPURL=abc.xyz 
SMTPPort=87 
client = new SmtpClient(SMTPURL, SMTPPort); 
client.Credentials = new NetworkCredential(senderID, senderPWD); 
msg = new MailMessage(); 
msg.To.Add("[email protected]"); 
msg.Body="hello hi bye"; 
client.Send(msg); 

這個代碼工作很好,但我有一個URL 123.xyz

備份電子郵件服務器,如果我的abc.xyz關閉或我有錯誤的URL我會獲得SMTPException

現在的問題是如何重新路由我的消息123.xyz備份郵件服務器

我的假設是趕上SMTPException和改變SMTPURL到123.xyz和重發,但是這是一個好方法或其他任何方式lternates是否存在重新路由到輔助郵件服務器?

在此先感謝

+0

https://msdn.microsoft.com/en-us/library/system.net .mail.smtpexception.statuscode%28v = vs.110%29.aspx – Hackerman

回答

1

,你應該能夠使用基本的try/catch塊:

public void function sendemail() 
{ 
try{ 
SendEmailByServer(primaryserverurl); 
} 
catch(SMTPException se) 
{ 
sendemailbyserver(backupurl); 
} 
catch(Exception ex) 
{ 
//something else broke 
} 

} 

public void function SendEmailByServer(string server) 
{ 
MailMessage msg; 
SmtpClient client; 
SMTPURL=server; 
SMTPPort=87; 
client = new SmtpClient(SMTPURL, SMTPPort); 
client.Credentials = new NetworkCredential(senderID, senderPWD); 
msg = new MailMessage(); 
msg.To.Add("[email protected]"); 
msg.Body="hello hi bye"; 
client.Send(msg); 
} 
+0

謝謝,這有助於。但我不知道是否有像C#內置的屬性來設置主要和備份電子郵件服務器 –

+0

我不熟悉內置任何東西。我工作的大多數地方都有自己的交換服務器,所以如果發生故障,您通常將注意力集中在備份服務器上,而不是切換到備份服務器。您始終可以使您的自定義smtpclient從.net one繼承,然後將備份服務器作爲屬性添加。重寫發送方法,以便它可以嘗試base.send,可以用備份捕獲和發送。 –

相關問題