title: Should we provide both asynchronous and synchronous implementations of SmtpClient wrapper?
body: <p>According to <a href="http://blogs.msdn.com/b/pfxteam/archive/2012/04/13/10293638.aspx" rel="nofollow">this</a> article, we should not provide synchronous wrappers of asynchronous implementations.</p>
  
  <p>We've abstracted the <code>System.Net.SmtpClient</code> behind an interface so that we can easily test code that sends emails.</p>
  
  <p>Since <code>SmtpClient</code> actually has both asynchronous and synchronous implementations, should we expose both of these or just expect any consumer of our <code>ISmtpClient</code> interface just to <code>Wait</code> our asynchronous <code>SendAsync</code> method.</p>
  
  <p>Not sure what the guidelines are here when it comes to building a general purpose library. In our case we know that we need to use both async and sync versions.</p>