From 3706d0dedd572c104f5cdffe5aa4eaa0704e8822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 4 Jun 2015 17:23:46 +0200 Subject: [PATCH] More work on email and notification infra #1456 --- pkg/models/emails.go | 24 ----------- pkg/notifications/email.go | 66 ++++++++++++++++++++++++++++++ pkg/notifications/notifications.go | 11 +++++ pkg/services/mailer/mailer.go | 12 ++++-- pkg/setting/setting.go | 2 - 5 files changed, 85 insertions(+), 30 deletions(-) delete mode 100644 pkg/models/emails.go create mode 100644 pkg/notifications/email.go create mode 100644 pkg/notifications/notifications.go diff --git a/pkg/models/emails.go b/pkg/models/emails.go deleted file mode 100644 index 342d220d2f5..00000000000 --- a/pkg/models/emails.go +++ /dev/null @@ -1,24 +0,0 @@ -package models - -type SendEmailCommand struct { - To []string - From string - Subject string - Body string - Type string - Massive bool - Info string -} - -// create mail content -func (m *SendEmailCommand) Content() string { - // set mail type - contentType := "text/plain; charset=UTF-8" - if m.Type == "html" { - contentType = "text/html; charset=UTF-8" - } - - // create mail content - content := "From: " + m.From + "\r\nSubject: " + m.Subject + "\r\nContent-Type: " + contentType + "\r\n\r\n" + m.Body - return content -} diff --git a/pkg/notifications/email.go b/pkg/notifications/email.go new file mode 100644 index 00000000000..bf15b1bd9dd --- /dev/null +++ b/pkg/notifications/email.go @@ -0,0 +1,66 @@ +package notifications + +import ( + m "github.com/grafana/grafana/pkg/models" + "github.com/grafana/grafana/pkg/setting" +) + +type SendEmailCommand struct { + To []string + From string + Subject string + Body string + Type string + Massive bool + Info string +} + +type SendResetPasswordEmailCommand struct { + Email string +} + +// create mail content +func (m *SendEmailCommand) Content() string { + // set mail type + contentType := "text/plain; charset=UTF-8" + if m.Type == "html" { + contentType = "text/html; charset=UTF-8" + } + + // create mail content + content := "From: " + m.From + "\r\nSubject: " + m.Subject + "\r\nContent-Type: " + contentType + "\r\n\r\n" + m.Body + return content +} + +// Create html mail command +func NewSendEmailCommand(To []string, From, Subject, Body string) SendEmailCommand { + return SendEmailCommand{ + To: To, + From: From, + Subject: Subject, + Body: Body, + Type: "html", + } +} + +// Create New mail message use MailFrom and MailUser +func NewMailMessageFrom(To []string, from, subject, body string) SendEmailCommand { + return NewSendEmailCommand(To, from, subject, body) +} + +// Create New mail message use MailFrom and MailUser +func NewMailMessage(To string, subject, body string) SendEmailCommand { + return NewMailMessageFrom([]string{To}, setting.Smtp.FromAddress, subject, body) +} + +func GetMailTmplData(u *m.User) map[interface{}]interface{} { + data := make(map[interface{}]interface{}, 10) + data["AppUrl"] = setting.AppUrl + data["BuildVersion"] = setting.BuildVersion + data["BuildStamp"] = setting.BuildStamp + data["BuildCommit"] = setting.BuildCommit + if u != nil { + data["User"] = u + } + return data +} diff --git a/pkg/notifications/notifications.go b/pkg/notifications/notifications.go new file mode 100644 index 00000000000..5850277731d --- /dev/null +++ b/pkg/notifications/notifications.go @@ -0,0 +1,11 @@ +package notifications + +import "github.com/grafana/grafana/pkg/bus" + +func Init() { + bus.AddHandler("email", sendResetPasswordEmail) +} + +func sendResetPasswordEmail(cmd *SendResetPasswordEmailCommand) error { + email := NewMailMessage("") +} diff --git a/pkg/services/mailer/mailer.go b/pkg/services/mailer/mailer.go index 27e4dc36d87..ffd60698e7f 100644 --- a/pkg/services/mailer/mailer.go +++ b/pkg/services/mailer/mailer.go @@ -1,3 +1,7 @@ +// Copyright 2014 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + package mailer import ( @@ -11,16 +15,16 @@ import ( "github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/log" - m "github.com/grafana/grafana/pkg/models" + "github.com/grafana/grafana/pkg/notifications" "github.com/grafana/grafana/pkg/setting" ) -var mailQueue chan *m.SendEmailCommand +var mailQueue chan *notifications.SendEmailCommand func Init() { bus.AddHandler("email", handleEmailCommand) - mailQueue = make(chan *m.SendEmailCommand, 10) + mailQueue = make(chan *notifications.SendEmailCommand, 10) setting.Smtp = setting.SmtpSettings{ Host: "smtp.gmail.com:587", @@ -57,7 +61,7 @@ func encodeRFC2047(text string) string { return strings.Trim(addr.String(), " <>") } -func handleEmailCommand(cmd *m.SendEmailCommand) error { +func handleEmailCommand(cmd *notifications.SendEmailCommand) error { log.Info("Sending on queue") mailQueue <- cmd return nil diff --git a/pkg/setting/setting.go b/pkg/setting/setting.go index 2a8ae91941c..fc430e65c50 100644 --- a/pkg/setting/setting.go +++ b/pkg/setting/setting.go @@ -38,7 +38,6 @@ const ( var ( // App settings. Env string = DEV - AppName string AppUrl string AppSubUrl string @@ -350,7 +349,6 @@ func NewConfigContext(args *CommandLineArgs) { setHomePath(args) loadConfiguration(args) - AppName = Cfg.Section("").Key("app_name").MustString("Grafana") Env = Cfg.Section("").Key("app_mode").MustString("development") server := Cfg.Section("server")