feat: WIP auth mailing implementation

This commit is contained in:
Florian Sylvain
2024-05-13 19:22:56 +02:00
parent d146363246
commit 8015639db5
13 changed files with 139 additions and 113 deletions
@@ -0,0 +1,6 @@
<!DOCTYPE html>
<html lang="en">
<body>
<p>salut bebou</p>
</body>
</html>
@@ -0,0 +1,57 @@
package gateways
import (
"GohCMS2/domain/gateways"
"bytes"
"embed"
"gopkg.in/gomail.v2"
"html/template"
"log"
"os"
"strconv"
)
type MailRepository struct{}
//go:embed mail/templates/*
var mailTemplateFiles embed.FS
func (m MailRepository) Send(receiverAddress string, templateName string, data interface{}) error {
from := os.Getenv("SMTP_EMAIL")
password := os.Getenv("SMTP_PASSWORD")
smtpHost := os.Getenv("SMTP_HOST")
smtpPort, _ := strconv.Atoi(os.Getenv("SMTP_PORT"))
d := gomail.NewDialer(smtpHost, smtpPort, from, password)
tmpl, err := template.ParseFS(mailTemplateFiles, "mail/templates/"+templateName+".html")
if err != nil {
log.Println("error when template.ParseFS:", err)
return err
}
var body bytes.Buffer
err = tmpl.Execute(&body, data)
if err != nil {
log.Println("error when tmpl.Execute:", err)
return err
}
msg := gomail.NewMessage()
msg.SetHeader("From", "GohCMS <"+from+">")
msg.SetHeader("To", receiverAddress)
msg.SetHeader("MIME-version", "1.0")
msg.SetHeader("Content-Type", "text/html")
msg.SetHeader("charset", "UTF-8")
msg.SetHeader("Subject", "GohCMS | Action required")
msg.SetBody("text/html", body.String())
if err := d.DialAndSend(msg); err != nil {
log.Println("error when sending email:", err)
return err
}
return nil
}
var _ gateways.IMailRepository = &MailRepository{}
@@ -10,7 +10,7 @@ import (
type PageRepository struct{}
//go:embed web/templates/*
var templateFiles embed.FS
var webTemplateFiles embed.FS
func NewPageRepository() *PageRepository {
return &PageRepository{}
@@ -18,7 +18,7 @@ func NewPageRepository() *PageRepository {
func (p *PageRepository) Get(name string, data interface{}) ([]byte, error) {
var processedHTML bytes.Buffer
tmpl, err := template.ParseFS(templateFiles, "web/templates/"+name+".html")
tmpl, err := template.ParseFS(webTemplateFiles, "web/templates/"+name+".html")
if err != nil {
return nil, err
}