Add support of SMTP authentication

This patch adds support of SMTP authentication w/ or wo/ SSL or TLS.
If the user has explicitly requested smtpauth, then are `smtpuser` and `smtppass` *required*? If so, then please check here that they are both set. Also, you can omit `default=None` since that is the default default value.