title: Passing in config values to a method using SOLID principles
body: <p>I have an email helper class that has a method that sends email:</p>
  
  <pre><code>private static class EmailHelper
  {
      public static void SendEmail(string from, string to, string subject, string message)
      {
          MailMessage msg = new MailMessage(from, to, subject, body);
          var client = new SmtpClient("my.smpthost.com"); //this will be moved to config.
          client.Send(msg);
      }
  }
  </code></pre>
  
  <p>My smtp host string will be placed in my config file. Question is what's the recommended way to pass the smtp host to this method? Should I have a constructor in this class that takes in the smtp string? Or, should I pass the smtp as a 5th parameter? Or should this method directly read from the config?</p>
  
  <p>(I realize that there may be several different ways to do this, but I am trying to understand the recommended approach, or at least approaches that are NOT recommended, keeping in mind the SOLID principles.)</p>