chore: smtp template
This commit is contained in:
parent
4c6be5cf54
commit
12591859b8
5 changed files with 90 additions and 1 deletions
pkg/smtpclient
|
@ -1,12 +1,61 @@
|
|||
package smtpclient
|
||||
|
||||
import "errors"
|
||||
import (
|
||||
"bytes"
|
||||
"embed"
|
||||
"errors"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type SMTPClient struct{}
|
||||
|
||||
//go:embed template/*
|
||||
var templates embed.FS
|
||||
|
||||
func (s SMTPClient) SendMail(templateName string, to string, data any) error {
|
||||
if to == "error@error.error" {
|
||||
return errors.New("error mail send")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewDummySMTPClient() SMTPClient {
|
||||
s := SMTPClient{}
|
||||
return s
|
||||
}
|
||||
|
||||
func (s SMTPClient) renderTemplates(templateName string, data any) (string, string, string, error) {
|
||||
subject, err := s.renderFile(fmt.Sprintf("%v.subject", templateName), data)
|
||||
if err != nil {
|
||||
return "", "", "", err
|
||||
}
|
||||
txt, err := s.renderFile(fmt.Sprintf("%v.txt", templateName), data)
|
||||
if err != nil {
|
||||
return "", "", "", err
|
||||
}
|
||||
|
||||
html, err := s.renderFile(fmt.Sprintf("%v.html", templateName), data)
|
||||
if err != nil {
|
||||
return "", "", "", err
|
||||
}
|
||||
|
||||
return subject, txt, html, nil
|
||||
}
|
||||
|
||||
func (s SMTPClient) renderFile(filename string, data any) (string, error) {
|
||||
tmpl, err := template.ParseFS(templates, "template/"+filename)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
var buf bytes.Buffer
|
||||
err = tmpl.Execute(&buf, data)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
renderedString := buf.String()
|
||||
return strings.Trim(renderedString, "\n"), nil
|
||||
}
|
||||
|
|
29
pkg/smtpclient/smtpclient_test.go
Normal file
29
pkg/smtpclient/smtpclient_test.go
Normal file
|
@ -0,0 +1,29 @@
|
|||
package smtpclient
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestRenderFile(t *testing.T) {
|
||||
smtp := NewDummySMTPClient()
|
||||
subject, err := smtp.renderFile("register.subject", nil)
|
||||
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "Bestätige deine E-Mail Adresse", subject)
|
||||
}
|
||||
|
||||
func TestRenderTemplate(t *testing.T) {
|
||||
smtp := NewDummySMTPClient()
|
||||
|
||||
subject, txt, html, err := smtp.renderTemplates("register", map[string]string{"Name": "Test Account Service", "Link": "http://www.google.de"})
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, "Bestätige deine E-Mail Adresse", subject)
|
||||
assert.Equal(t, "Hallo,\n\num deinen Account auf Test Account Service zu aktivieren klicke auf folgenden Link http://www.google.de.\n\nViele Grüße,", txt)
|
||||
htmlContent := `Hello, <br><br>
|
||||
to activate your Acount at Test Account Service please click <a href="http://www.google.de">this link.</a>
|
||||
<br><br>
|
||||
Best regards,<br>`
|
||||
assert.Equal(t, htmlContent, html)
|
||||
}
|
5
pkg/smtpclient/template/register.html
Normal file
5
pkg/smtpclient/template/register.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
Hello, <br><br>
|
||||
to activate your Acount at {{ .Name }} please click <a href="{{ .Link }}">this link.</a>
|
||||
<br><br>
|
||||
Best regards,<br>
|
||||
|
1
pkg/smtpclient/template/register.subject
Normal file
1
pkg/smtpclient/template/register.subject
Normal file
|
@ -0,0 +1 @@
|
|||
Bestätige deine E-Mail Adresse
|
5
pkg/smtpclient/template/register.txt
Normal file
5
pkg/smtpclient/template/register.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
Hallo,
|
||||
|
||||
um deinen Account auf {{ .Name }} zu aktivieren klicke auf folgenden Link {{ .Link }}.
|
||||
|
||||
Viele Grüße,
|
Loading…
Add table
Reference in a new issue