From 38ff1e439c0ff9355527d7f3737b3602b68d9426 Mon Sep 17 00:00:00 2001 From: dhax Date: Thu, 5 Oct 2017 02:18:50 +0200 Subject: [PATCH] setting smtp host requires valid tcp connection or panic --- email/email.go | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/email/email.go b/email/email.go index e0dc91f..16fac03 100644 --- a/email/email.go +++ b/email/email.go @@ -35,26 +35,38 @@ func NewMailer() (*Mailer, error) { return nil, err } - smtpHost := viper.GetString("email_smtp_host") - smtpPort := viper.GetInt("email_smtp_port") - smtpUser := viper.GetString("email_smtp_user") - smtpPass := viper.GetString("email_smtp_password") + smtp := struct { + Host string + Port int + User string + Password string + }{ + viper.GetString("email_smtp_host"), + viper.GetInt("email_smtp_port"), + viper.GetString("email_smtp_user"), + viper.GetString("email_smtp_password"), + } s := &Mailer{ - client: gomail.NewPlainDialer(smtpHost, smtpPort, smtpUser, smtpPass), + client: gomail.NewPlainDialer(smtp.Host, smtp.Port, smtp.User, smtp.Password), templates: templates, from: viper.GetString("email_from_address"), fromName: viper.GetString("email_from_name"), } + if smtp.Host == "" { + log.Println("SMTP host not set => printing emails to stdout") + debug = true + return s, nil + } + d, err := s.client.Dial() if err != nil { - log.Println("SMTP error:", err) - log.Println("printing emails to stdout") - debug = true + return nil, err } else { d.Close() } + return s, nil }