email.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package notifications
  2. import (
  3. m "github.com/grafana/grafana/pkg/models"
  4. "github.com/grafana/grafana/pkg/setting"
  5. )
  6. type SendEmailCommand struct {
  7. To []string
  8. From string
  9. Subject string
  10. Body string
  11. Type string
  12. Massive bool
  13. Info string
  14. }
  15. type SendResetPasswordEmailCommand struct {
  16. Email string
  17. }
  18. // create mail content
  19. func (m *SendEmailCommand) Content() string {
  20. // set mail type
  21. contentType := "text/plain; charset=UTF-8"
  22. if m.Type == "html" {
  23. contentType = "text/html; charset=UTF-8"
  24. }
  25. // create mail content
  26. content := "From: " + m.From + "\r\nSubject: " + m.Subject + "\r\nContent-Type: " + contentType + "\r\n\r\n" + m.Body
  27. return content
  28. }
  29. // Create html mail command
  30. func NewSendEmailCommand(To []string, From, Subject, Body string) SendEmailCommand {
  31. return SendEmailCommand{
  32. To: To,
  33. From: From,
  34. Subject: Subject,
  35. Body: Body,
  36. Type: "html",
  37. }
  38. }
  39. // Create New mail message use MailFrom and MailUser
  40. func NewMailMessageFrom(To []string, from, subject, body string) SendEmailCommand {
  41. return NewSendEmailCommand(To, from, subject, body)
  42. }
  43. // Create New mail message use MailFrom and MailUser
  44. func NewMailMessage(To string, subject, body string) SendEmailCommand {
  45. return NewMailMessageFrom([]string{To}, setting.Smtp.FromAddress, subject, body)
  46. }
  47. func GetMailTmplData(u *m.User) map[interface{}]interface{} {
  48. data := make(map[interface{}]interface{}, 10)
  49. data["AppUrl"] = setting.AppUrl
  50. data["BuildVersion"] = setting.BuildVersion
  51. data["BuildStamp"] = setting.BuildStamp
  52. data["BuildCommit"] = setting.BuildCommit
  53. if u != nil {
  54. data["User"] = u
  55. }
  56. return data
  57. }