2017-06-08 57 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,可以用备份捕获和发送。 –

相关问题