2009-11-30 3 views
0

J'ai un code qui dépend fortement de la notification par email. Dans mon web.config je suis en mesure de spécifier un serveur smtp comme ceci:asp.net - comment utiliser 2 serveurs de messagerie ou plus pour la sécurité intégrée

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

Ceci est acceptable, mais je voudrais mettre en œuvre 2 ou 3 serveurs d'échange ici dans le cas où (pour une raison quelconque) smtp le serveur 1 est déconnecté, j'ai besoin d'une option de sauvegarde.

Existe-t-il un moyen rapide/intégré d'atteindre cette sécurité intégrée dans .net, ou existe-t-il un moyen manuel fiable de l'implémenter? Mon existant envoyer le code mesage ressemble à ceci (mais édulcoré):

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

Avis son tirant l'hôte directement à partir de la configuration.

Des idées quelle est la meilleure pratique ici pour ce scénario?

Répondre

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

et configurer le transport SMTP local pour transmettre à vos serveurs rendundant. De cette façon, vous ne perdrez pas de courriels à cause de problèmes de réseau transitoire (le MTA local les retiendra).

+0

Je vais accepter cela comme une réponse parce que je suis d'accord que la redondance est mieux gérée par un serveur relais SMTP, plutôt que dans la logique métier C#. –

1

Il existe un SmtpClient constructor qui prend un nom d'hôte et un port. Vous pourriez avoir une liste de serveurs, essayer d'envoyer le courrier et si le serveur est indisponible, il lancera une exception que vous attraperez et réessayez avec un autre serveur de la liste.

Questions connexes