asp.net - как использовать 2 или более почтовых сервера для отказоустойчивости - PullRequest
0 голосов
/ 30 ноября 2009

У меня есть код, который сильно зависит от уведомления по электронной почте. В моем 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 ]

1 голос
/ 30 ноября 2009
<network host="localhost" port=...

и настройте локальный транспорт SMTP для ретрансляции на ваши резервные серверы. таким образом, вы не потеряете электронную почту из-за временных проблем в сети (местный MTA просто удержит их).

1 голос
/ 30 ноября 2009

Имеется конструктор SmtpClient , который принимает имя хоста и порт. У вас может быть список серверов, попробуйте отправить письмо, и если сервер недоступен, он выдаст исключение, которое вы перехватите, и повторите попытку с другим сервером из списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...