add forget password
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
package brevo
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"furtuna-be/internal/entity"
|
||||
"html/template"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
|
||||
brevo "github.com/getbrevo/brevo-go/lib"
|
||||
)
|
||||
|
||||
type Config interface {
|
||||
GetApiKey() string
|
||||
}
|
||||
|
||||
type ServiceImpl struct {
|
||||
brevoConn *brevo.APIClient
|
||||
}
|
||||
|
||||
func (s ServiceImpl) SendEmailTransactional(ctx context.Context, param entity.SendEmailNotificationParam) error {
|
||||
templateFile, err := ioutil.ReadFile(param.TemplatePath)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
|
||||
renderedTemplate, err := template.New(param.TemplateName).Parse(string(templateFile))
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
|
||||
return s.sendEmail(ctx, renderedTemplate, param)
|
||||
}
|
||||
|
||||
func (s ServiceImpl) sendEmail(ctx context.Context, tmpl *template.Template, param entity.SendEmailNotificationParam) error {
|
||||
var body bytes.Buffer
|
||||
err := tmpl.Execute(&body, param.Data)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
|
||||
payload := brevo.SendSmtpEmail{
|
||||
Sender: &brevo.SendSmtpEmailSender{
|
||||
Email: "siregaraditya@gmail.com",
|
||||
},
|
||||
To: []brevo.SendSmtpEmailTo{
|
||||
{
|
||||
Email: "avranata01@gmail.com",
|
||||
},
|
||||
},
|
||||
Subject: param.Subject,
|
||||
HtmlContent: body.String(),
|
||||
}
|
||||
|
||||
if len(param.CcEmails) != 0 {
|
||||
for _, email := range param.CcEmails {
|
||||
payload.Cc = append(payload.Cc, brevo.SendSmtpEmailCc{
|
||||
Email: email,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
_, _, err = s.brevoConn.TransactionalEmailsApi.SendTransacEmail(ctx, payload)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func New(conf Config) *ServiceImpl {
|
||||
cfg := brevo.NewConfiguration()
|
||||
cfg.AddDefaultHeader("api-key", conf.GetApiKey())
|
||||
client := brevo.NewAPIClient(cfg)
|
||||
result, resp, err := client.AccountApi.GetAccount(context.Background())
|
||||
if err != nil {
|
||||
fmt.Println("Error when calling AccountApi->get_account: ", err.Error())
|
||||
log.Fatal("error")
|
||||
}
|
||||
fmt.Println("GetAccount Object:", result, " GetAccount Response: ", resp)
|
||||
|
||||
return &ServiceImpl{brevoConn: client}
|
||||
}
|
||||
Reference in New Issue
Block a user