@@ -16,8 +16,11 @@ var mailTemplates *template.Template
16
16
var tmplResetPassword = "reset_password.html"
17
17
18
18
func Init () error {
19
+ initMailQueue ()
20
+
19
21
bus .AddHandler ("email" , sendResetPasswordEmail )
20
22
bus .AddHandler ("email" , validateResetPasswordCode )
23
+ bus .AddHandler ("email" , sendEmailCommandHandler )
21
24
22
25
mailTemplates = template .New ("name" )
23
26
mailTemplates .Funcs (template.FuncMap {
@@ -41,26 +44,23 @@ func Init() error {
41
44
return nil
42
45
}
43
46
44
- var dispatchMail = func (cmd * m.SendEmailCommand ) error {
45
- return bus .Dispatch (cmd )
46
- }
47
-
48
47
func subjectTemplateFunc (obj map [string ]interface {}, value string ) string {
49
48
obj ["value" ] = value
50
49
return ""
51
50
}
52
51
53
- func sendResetPasswordEmail (cmd * m.SendResetPasswordEmailCommand ) error {
52
+ func sendEmailCommandHandler (cmd * m.SendEmailCommand ) error {
54
53
var buffer bytes.Buffer
54
+ data := cmd .Data
55
+ if data == nil {
56
+ data = make (map [string ]interface {}, 10 )
57
+ }
55
58
56
- var data = getMailTmplData (cmd .User )
57
- code := createUserEmailCode (cmd .User , nil )
58
- data ["Code" ] = code
59
-
60
- mailTemplates .ExecuteTemplate (& buffer , tmplResetPassword , data )
59
+ setDefaultTemplateData (data , nil )
60
+ mailTemplates .ExecuteTemplate (& buffer , cmd .Template , data )
61
61
62
- dispatchMail ( & m. SendEmailCommand {
63
- To : [] string { cmd .User . Email } ,
62
+ addToMailQueue ( & Message {
63
+ To : cmd .To ,
64
64
From : setting .Smtp .FromAddress ,
65
65
Subject : data ["Subject" ].(map [string ]interface {})["value" ].(string ),
66
66
Body : buffer .String (),
@@ -69,6 +69,17 @@ func sendResetPasswordEmail(cmd *m.SendResetPasswordEmailCommand) error {
69
69
return nil
70
70
}
71
71
72
+ func sendResetPasswordEmail (cmd * m.SendResetPasswordEmailCommand ) error {
73
+ return sendEmailCommandHandler (& m.SendEmailCommand {
74
+ To : []string {cmd .User .Email },
75
+ Template : tmplResetPassword ,
76
+ Data : map [string ]interface {}{
77
+ "Code" : createUserEmailCode (cmd .User , nil ),
78
+ "Name" : cmd .User .NameOrFallback (),
79
+ },
80
+ })
81
+ }
82
+
72
83
func validateResetPasswordCode (query * m.ValidateResetPasswordCodeQuery ) error {
73
84
login := getLoginForEmailCode (query .Code )
74
85
if login == "" {
0 commit comments