feat(mail): #132 unify env variables and send mails with smtp

This commit is contained in:
2024-09-05 17:54:39 +02:00
parent 0872728f3a
commit 5172a30781
7 changed files with 111 additions and 22 deletions

View File

@@ -9,7 +9,7 @@ import (
_ "github.com/golang-migrate/migrate/v4/source/file"
)
func RunMigrations(db *sql.DB) {
func MustRunMigrations(db *sql.DB) {
driver, err := sqlite3.WithInstance(db, &sqlite3.Config{})
if err != nil {
log.Fatal(err)

57
utils/env.go Normal file
View File

@@ -0,0 +1,57 @@
package utils
import (
"log"
"log/slog"
"os"
)
var (
SmtpHost string
SmtpPort string
SmtpUser string
SmtpPass string
SmtpFromMail string
SmtpFromName string
BaseUrl string
)
func MustInitEnv() {
SmtpHost = os.Getenv("SMTP_HOST")
SmtpPort = os.Getenv("SMTP_PORT")
SmtpUser = os.Getenv("SMTP_USER")
SmtpPass = os.Getenv("SMTP_PASS")
SmtpFromMail = os.Getenv("SMTP_FROM_MAIL")
SmtpFromName = os.Getenv("SMTP_FROM_NAME")
BaseUrl = os.Getenv("BASE_URL")
if SmtpHost == "" {
log.Fatal("SMTP_HOST must be set")
}
if SmtpPort == "" {
log.Fatal("SMTP_PORT must be set")
}
if SmtpUser == "" {
log.Fatal("SMTP_USER must be set")
}
if SmtpPass == "" {
log.Fatal("SMTP_PASS must be set")
}
if SmtpFromMail == "" {
log.Fatal("SMTP_FROM_MAIL must be set")
}
if SmtpFromName == "" {
log.Fatal("SMTP_FROM_NAME must be set")
}
if BaseUrl == "" {
log.Fatal("BASE_URL must be set")
}
slog.Info("BASE_URL is " + BaseUrl)
slog.Info("SMTP_HOST is " + SmtpHost)
slog.Info("SMTP_PORT is " + SmtpPort)
slog.Info("SMTP_USER is " + SmtpUser)
slog.Info("SMTP_PASS is " + SmtpPass)
slog.Info("SMTP_FROM_MAIL is " + SmtpFromMail)
slog.Info("SMTP_FROM_NAME is " + SmtpFromName)
}

19
utils/mail.go Normal file
View File

@@ -0,0 +1,19 @@
package utils
import (
"log/slog"
"net/smtp"
)
func SendWelcomeMail(to string) {
auth := smtp.PlainAuth("", SmtpUser, SmtpPass, SmtpHost)
msg := "From: " + SmtpFromName + " <" + SmtpFromMail + ">\nTo: " + to + "\nSubject: Welcome to me-fit\n\nWelcome to me-fit!"
err := smtp.SendMail(SmtpHost+":"+SmtpPort, auth, SmtpFromMail, []string{to}, []byte(msg))
if err != nil {
slog.Error("Could not send mail: " + err.Error())
}
}