aboutsummaryrefslogtreecommitdiff
path: root/utils/email/email.go
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-12-15 14:28:13 +0530
committerBobby <[email protected]>2025-12-15 14:28:13 +0530
commite143ba0b4a0fff8448124d86bb94e07742aa0a9b (patch)
tree0dce19e2122b60c6a9e1a338fa884ba206be561c /utils/email/email.go
parent5f6e383d3799d39036842e00ae3149be7fafe188 (diff)
downloadimageboard-main.tar.xz
imageboard-main.zip
account routes clubbed together; send email for forgot usernameHEADmain
Diffstat (limited to 'utils/email/email.go')
-rw-r--r--utils/email/email.go34
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 {