When developing a system that sends mails, often the mails shouldn’t be sent for real when testing. Instead they should be made available for investigation. Fortunately, that functionality is built in with the .NET SmtpClient.
There is even no need to change the code. It’s just a matter of configuration. Add the following lines to the app.config
(or web.config
for web applications)
<system.net> <mailSettings> <smtp deliveryMethod="SpecifiedPickupDirectory" from="noreply@example.org"> <specifiedPickupDirectory pickupDirectoryLocation="c:\temp" /> <!-- The network host setting isn't used, but without it an exception occurs when disposing of the SmtpClient.--> <network host="localhost"/> </smtp> </mailSettings> </system.net> |
The pickup directory setting is meant to be used with a local mail server that watches a directory for new mails. I have no mail server watching my c:\temp
directory. Instead, the mails are just dropped there as .eml
-files that can be opened using a mail program (e.g. outlook).