From ed9a2da83b3b77e7dd0314eaa92082ac8a2a9a9c Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Mon, 21 Sep 2015 15:11:56 -0700 Subject: Adding email to admin console --- utils/mail.go | 60 ++++++++++++++++++++++++----------------------------------- 1 file changed, 24 insertions(+), 36 deletions(-) (limited to 'utils/mail.go') diff --git a/utils/mail.go b/utils/mail.go index 7cb178626..9d3db9640 100644 --- a/utils/mail.go +++ b/utils/mail.go @@ -15,43 +15,28 @@ import ( "time" ) -func CheckMailSettings() *model.AppError { - if len(Cfg.EmailSettings.SMTPServer) == 0 || Cfg.EmailSettings.ByPassEmail { - return model.NewAppError("CheckMailSettings", "No email settings present, mail will not be sent", "") - } - conn, err := connectToSMTPServer() - if err != nil { - return err - } - defer conn.Close() - c, err2 := newSMTPClient(conn) - if err2 != nil { - return err - } - defer c.Quit() - defer c.Close() - - return nil -} - -func connectToSMTPServer() (net.Conn, *model.AppError) { - host, _, _ := net.SplitHostPort(Cfg.EmailSettings.SMTPServer) +const ( + CONN_SECURITY_NONE = "" + CONN_SECURITY_TLS = "TLS" + CONN_SECURITY_STARTTLS = "STARTTLS" +) +func connectToSMTPServer(config *model.Config) (net.Conn, *model.AppError) { var conn net.Conn var err error - if Cfg.EmailSettings.UseTLS { + if config.EmailSettings.ConnectionSecurity == CONN_SECURITY_TLS { tlsconfig := &tls.Config{ InsecureSkipVerify: true, - ServerName: host, + ServerName: config.EmailSettings.SMTPServer, } - conn, err = tls.Dial("tcp", Cfg.EmailSettings.SMTPServer, tlsconfig) + conn, err = tls.Dial("tcp", config.EmailSettings.SMTPServer+":"+config.EmailSettings.SMTPPort, tlsconfig) if err != nil { return nil, model.NewAppError("SendMail", "Failed to open TLS connection", err.Error()) } } else { - conn, err = net.Dial("tcp", Cfg.EmailSettings.SMTPServer) + conn, err = net.Dial("tcp", config.EmailSettings.SMTPServer+":"+config.EmailSettings.SMTPPort) if err != nil { return nil, model.NewAppError("SendMail", "Failed to open connection", err.Error()) } @@ -60,24 +45,23 @@ func connectToSMTPServer() (net.Conn, *model.AppError) { return conn, nil } -func newSMTPClient(conn net.Conn) (*smtp.Client, *model.AppError) { - host, _, _ := net.SplitHostPort(Cfg.EmailSettings.SMTPServer) - c, err := smtp.NewClient(conn, host) +func newSMTPClient(conn net.Conn, config *model.Config) (*smtp.Client, *model.AppError) { + c, err := smtp.NewClient(conn, config.EmailSettings.SMTPServer+":"+config.EmailSettings.SMTPPort) if err != nil { l4g.Error("Failed to open a connection to SMTP server %v", err) return nil, model.NewAppError("SendMail", "Failed to open TLS connection", err.Error()) } // GO does not support plain auth over a non encrypted connection. // so if not tls then no auth - auth := smtp.PlainAuth("", Cfg.EmailSettings.SMTPUsername, Cfg.EmailSettings.SMTPPassword, host) - if Cfg.EmailSettings.UseTLS { + auth := smtp.PlainAuth("", config.EmailSettings.SMTPUsername, config.EmailSettings.SMTPPassword, config.EmailSettings.SMTPServer+":"+config.EmailSettings.SMTPPort) + if config.EmailSettings.ConnectionSecurity == CONN_SECURITY_TLS { if err = c.Auth(auth); err != nil { return nil, model.NewAppError("SendMail", "Failed to authenticate on SMTP server", err.Error()) } - } else if Cfg.EmailSettings.UseStartTLS { + } else if config.EmailSettings.ConnectionSecurity == CONN_SECURITY_TLS { tlsconfig := &tls.Config{ InsecureSkipVerify: true, - ServerName: host, + ServerName: config.EmailSettings.SMTPServer, } c.StartTLS(tlsconfig) if err = c.Auth(auth); err != nil { @@ -88,12 +72,16 @@ func newSMTPClient(conn net.Conn) (*smtp.Client, *model.AppError) { } func SendMail(to, subject, body string) *model.AppError { + return SendMailUsingConfig(to, subject, body, Cfg) +} + +func SendMailUsingConfig(to, subject, body string, config *model.Config) *model.AppError { - if len(Cfg.EmailSettings.SMTPServer) == 0 || Cfg.EmailSettings.ByPassEmail { + if !config.EmailSettings.SendEmailNotifications { return nil } - fromMail := mail.Address{Cfg.EmailSettings.FeedbackName, Cfg.EmailSettings.FeedbackEmail} + fromMail := mail.Address{config.EmailSettings.FeedbackName, config.EmailSettings.FeedbackEmail} toMail := mail.Address{"", to} headers := make(map[string]string) @@ -110,13 +98,13 @@ func SendMail(to, subject, body string) *model.AppError { } message += "\r\n" + body + "" - conn, err1 := connectToSMTPServer() + conn, err1 := connectToSMTPServer(config) if err1 != nil { return err1 } defer conn.Close() - c, err2 := newSMTPClient(conn) + c, err2 := newSMTPClient(conn, config) if err2 != nil { return err2 } -- cgit v1.2.3-1-g7c22 From 0529a494ae6b541f917522a20de92e3d36615f65 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Mon, 21 Sep 2015 17:34:13 -0700 Subject: Adding image properties --- utils/mail.go | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'utils/mail.go') diff --git a/utils/mail.go b/utils/mail.go index 9d3db9640..dd975155d 100644 --- a/utils/mail.go +++ b/utils/mail.go @@ -15,17 +15,11 @@ import ( "time" ) -const ( - CONN_SECURITY_NONE = "" - CONN_SECURITY_TLS = "TLS" - CONN_SECURITY_STARTTLS = "STARTTLS" -) - func connectToSMTPServer(config *model.Config) (net.Conn, *model.AppError) { var conn net.Conn var err error - if config.EmailSettings.ConnectionSecurity == CONN_SECURITY_TLS { + if config.EmailSettings.ConnectionSecurity == model.CONN_SECURITY_TLS { tlsconfig := &tls.Config{ InsecureSkipVerify: true, ServerName: config.EmailSettings.SMTPServer, @@ -54,11 +48,11 @@ func newSMTPClient(conn net.Conn, config *model.Config) (*smtp.Client, *model.Ap // GO does not support plain auth over a non encrypted connection. // so if not tls then no auth auth := smtp.PlainAuth("", config.EmailSettings.SMTPUsername, config.EmailSettings.SMTPPassword, config.EmailSettings.SMTPServer+":"+config.EmailSettings.SMTPPort) - if config.EmailSettings.ConnectionSecurity == CONN_SECURITY_TLS { + if config.EmailSettings.ConnectionSecurity == model.CONN_SECURITY_TLS { if err = c.Auth(auth); err != nil { return nil, model.NewAppError("SendMail", "Failed to authenticate on SMTP server", err.Error()) } - } else if config.EmailSettings.ConnectionSecurity == CONN_SECURITY_TLS { + } else if config.EmailSettings.ConnectionSecurity == model.CONN_SECURITY_STARTTLS { tlsconfig := &tls.Config{ InsecureSkipVerify: true, ServerName: config.EmailSettings.SMTPServer, -- cgit v1.2.3-1-g7c22