asp.net - 如何使用2个或更多电子邮件服务器进行故障保护

时间:2009-11-30 08:11:56

标签: asp.net smtp email

我的代码很大程度上依赖于电子邮件通知。在我的web.config中,我可以像这样指定一个smtp服务器:

 <system.net>
    <mailSettings>
      <smtp from="myaccount@mydomain.com">
        <network host="mail.mydomain.com" port="25" userName="myusername" password="mypassword" defaultCredentials="true"/>
      </smtp>
    </mailSettings>
  </system.net>

这是可以接受的,但我想在这里实现2或3个交换服务器(因为什么原因)smtp服务器1脱机,我需要一个备份选项。

是否有任何快速/内置的方法可以在.net中实现此故障安全,或者是否有可靠的手动方式来实现此功能。我现有的发送消息代码看起来像这样(但是淡化了):

    MailMessage message = new MailMessage();
    SmtpClient client = new SmtpClient();
    client.Send(message);

请注意,它直接从配置中拉出主机。

任何想法这个场景的最佳实践是什么?

2 个答案:

答案 0 :(得分:1)

有一个SmtpClient constructor,它接受​​一个主机名和端口。您可以拥有一个服务器列表,尝试发送邮件,如果服务器不可用,它将抛出一个异常,您将从列表中捕获并重试其他服务器。

答案 1 :(得分:1)

<network host="localhost" port=...

并将本地SMTP传输配置为中继到您的rendundant服务器。 这样你就不会因为短暂的网络问题而丢失电子邮件(本地MTA只会保留它们)。