I just learned about this neat trick that’s helpful for developing email features locally.
In your web.config file you can tell your application to save emails to a folder instead of sending through an smtp server. This way you can have your application code work as normal and check all the emails it sends by just looking in a folder. The folder has to exist first. For instance, I created a local folder called c:\TempEmail\ and then changed my local web.config to this:
<!–
<system.net>
<mailSettings>
<smtp from=”email@address.com”>
<network host=”smtp.address.com” password=”” userName=”” defaultCredentials=”true” />
</smtp>
</mailSettings>
</system.net>
–>
<!– use a pickup directory for debugging –>
<system.net>
<mailSettings>
<smtp from=”email@address.com” deliveryMethod=”SpecifiedPickupDirectory”>
<specifiedPickupDirectory pickupDirectoryLocation=”C:\TempEmail”/>
</smtp>
</mailSettings>
</system.net>
All email sent through your application will end up as a file in the c:\TempEmail\ folder instead of actually being sent out. And I didn’t have to change my code at all!
MailDefinition md = new MailDefinition();
…..
MailMessage msg = md.CreateMailMessage(user.Email, replacements, bodyHtml, newSystem.Web.UI.Control());
//send it!
SmtpClient smtp = new SmtpClient();
smtp.Send(msg);
You can open the eml file in Outlook and it’ll look just like it’ll look in the real world – except that you didn’t bother your user with a test email. Sweet!
Tags: c#, iis, smtp