il m'a été demandé, à plusieurs reprises, comment je faisais pour simuler l'envoi de mail lors de mes démos de Workflow Foundation.
Ma solution est plutôt simple : j'utilise la configuration par défaut du SmtpClient et j'oriente les mails vers un dossier local. Dans mes projets de démos et de tests, j'ai toujours la configuration suivante pour mes clients SMTP.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="D:\mails"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
Note : Il faut créer le dossier avant de lancer des tests. Sinon, on obtient un message d'insulte nous disant que le dossier n'existe pas
À partir du moment où j'utilise cette configuration, toutes mes instances de type SmtpClient enverront leurs mails dans mon dossier « D:\mails\ ».
Les avantages sont nombreux :
- Je peux travailler en déplacement (et sans réseau).
- Je n'ai rien installé sur mon PC, je n'installerais donc rien sur un serveur de tests.
- Quand je publie une version en production, la configuration de Release replace cette section (pas besoin de changer le code).
- Mes projets de tests unitaires peuvent jouer ce code sans polluer ma boite mail.
- Je peux avoir autant de destinataires que je veux (pour du Workflow, c'est très important).
- Mes mails ne vont pas inutilement sur internet pour revenir sur mon PC.
- Je n'attends pas des heures après un mail qui n'arrive pas !