diff options
| author | Bobby <[email protected]> | 2025-12-15 14:28:13 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-12-15 14:28:13 +0530 |
| commit | e143ba0b4a0fff8448124d86bb94e07742aa0a9b (patch) | |
| tree | 0dce19e2122b60c6a9e1a338fa884ba206be561c /utils/email | |
| parent | 5f6e383d3799d39036842e00ae3149be7fafe188 (diff) | |
| download | imageboard-main.tar.xz imageboard-main.zip | |
Diffstat (limited to 'utils/email')
| -rw-r--r-- | utils/email/email.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/utils/email/email.go b/utils/email/email.go index 168da25..4877cd5 100644 --- a/utils/email/email.go +++ b/utils/email/email.go @@ -65,6 +65,40 @@ func SendVerificationEmail(user *models.User) error { return SendMail(user.Email, subject, body.String()) } +func SendForgotUsernameEmail(users *[]models.User) error { + tmpl, err := template.ParseFiles("templates/email/forgot_username.html") + if err != nil { + return fmt.Errorf("failed to parse email template: %w", err) + } + resetLink := fmt.Sprintf("%s%s?mode=password", config.Server.AppBaseURL, config.URL_FORGOT_PASSWORD) + var usernames string + + for i, user := range *users { + usernames += user.Username + if i < len(*users)-1 { + usernames += ", " + } + } + + data := struct { + Username string + Appname string + Link string + }{ + Username: usernames, + Appname: config.Server.AppName, + Link: resetLink, + } + + var body bytes.Buffer + if err := tmpl.Execute(&body, data); err != nil { + return fmt.Errorf("failed to execute email template: %w", err) + } + + subject := fmt.Sprintf("Your username for %s", config.Server.AppName) + return SendMail((*users)[0].Email, subject, body.String()) +} + // func SendPasswordResetEmail(user *models.User) error { // token, err := user.GenerateToken(database.DB, models.EmailTokenTypePasswordReset) // if err != nil { |
