diff options
Diffstat (limited to 'modules/mailer/mail.go')
-rw-r--r-- | modules/mailer/mail.go | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/modules/mailer/mail.go b/modules/mailer/mail.go index 6c73e7e5..ae8ce653 100644 --- a/modules/mailer/mail.go +++ b/modules/mailer/mail.go @@ -21,6 +21,7 @@ import ( const ( AUTH_ACTIVE base.TplName = "mail/auth/active" + AUTH_ACTIVATE_EMAIL base.TplName = "mail/auth/activate_email" AUTH_REGISTER_SUCCESS base.TplName = "mail/auth/register_success" AUTH_RESET_PASSWORD base.TplName = "mail/auth/reset_passwd" @@ -30,9 +31,7 @@ const ( // Create New mail message use MailFrom and MailUser func NewMailMessageFrom(To []string, from, subject, body string) Message { - msg := NewHtmlMessage(To, from, subject, body) - msg.User = setting.MailService.User - return msg + return NewHtmlMessage(To, from, subject, body) } // Create New mail message use MailFrom and MailUser @@ -64,6 +63,17 @@ func CreateUserActiveCode(u *models.User, startInf interface{}) string { return code } +// create a time limit code for user active +func CreateUserEmailActivateCode(u *models.User, e *models.EmailAddress, startInf interface{}) string { + minutes := setting.Service.ActiveCodeLives + data := com.ToStr(u.Id) + e.Email + u.LowerName + u.Passwd + u.Rands + code := base.CreateTimeLimitCode(data, minutes, startInf) + + // add tail hex username + code += hex.EncodeToString([]byte(u.LowerName)) + return code +} + // Send user register mail with active code func SendRegisterMail(r macaron.Render, u *models.User) { code := CreateUserActiveCode(u, nil) @@ -103,6 +113,27 @@ func SendActiveMail(r macaron.Render, u *models.User) { SendAsync(&msg) } +// Send email to verify secondary email. +func SendActivateEmail(r macaron.Render, user *models.User, email *models.EmailAddress) { + code := CreateUserEmailActivateCode(user, email, nil) + + subject := "Verify your e-mail address" + + data := GetMailTmplData(user) + data["Code"] = code + data["Email"] = email.Email + body, err := r.HTMLString(string(AUTH_ACTIVATE_EMAIL), data) + if err != nil { + log.Error(4, "mail.SendActiveMail(fail to render): %v", err) + return + } + + msg := NewMailMessage([]string{email.Email}, subject, body) + msg.Info = fmt.Sprintf("UID: %d, send activate email to %s", user.Id, email.Email) + + SendAsync(&msg) +} + // Send reset password email. func SendResetPasswdMail(r macaron.Render, u *models.User) { code := CreateUserActiveCode(u, nil) |