Change to more powerful mail library that especially adds a correct Date heeader for us.

This commit is contained in:
Gonne 2025-03-25 21:18:13 +01:00
parent 3ccbe8ec74
commit d3cb4bc375
Signed by: Gonne
SSH key fingerprint: SHA256:J8w3ZCNyz9MoTLV+eU7YRTVw59NYig44i0IWhbsgQG8
4 changed files with 106 additions and 14 deletions

View file

@ -10,7 +10,7 @@ import (
"html/template"
"log"
"math/big"
"net/smtp"
"github.com/wneessen/go-mail"
"officeHours/config"
"officeHours/models"
"officeHours/templating"
@ -132,13 +132,13 @@ func (r *RequestRepo) newSecret() (string, error) {
}
func (r *RequestRepo) sendConfirmationMail(request models.Request) error {
var message bytes.Buffer
var messageText bytes.Buffer
var data = struct {
Config config.Config
Request models.Request
MessageId template.HTML
}{r.config, request, template.HTML("<" + randomString(15) + "@" + r.config.Server.Domain + ">")}
err := templating.WriteTemplate(&message, "confirmationMail", data)
err := templating.WriteTemplate(&messageText, "confirmationMail", data)
if err != nil {
err = fmt.Errorf("error parsing confirmation Mail: %w", err)
log.Println(err.Error())
@ -147,10 +147,35 @@ func (r *RequestRepo) sendConfirmationMail(request models.Request) error {
switch r.config.Mailer.Type {
case "Stdout":
fmt.Println(message.String())
fmt.Println(messageText.String())
case "Smtp":
to := []string{request.OfficeHour.Tutor.Email}
var auth smtp.Auth
message := mail.NewMsg()
if err := message.From(r.config.Mailer.FromAddress); err != nil {
log.Println(err.Error())
return err
}
if err := message.To(request.OfficeHour.Tutor.Email); err != nil {
log.Println(err.Error())
return err;
}
switch request.Action {
case models.RequestActivate:
message.Subject("Sprechstunde anlegen")
case models.RequestDelete:
message.Subject("Sprechstunde löschen")
}
message.SetBodyString(mail.TypeTextPlain, messageText.String())
client, err := mail.NewClient(r.config.Mailer.SmtpHost, mail.WithPort(r.config.Mailer.SmtpPort))/*, mail.WithSMTPAuth(mail.SMTPAuthPlain),
mail.WithUsername(r.config.Mailer.SmtpIdentity), mail.WithPassword(r.config.Mailer.SmtpPassword))*/
if err != nil {
log.Println(err.Error())
return err;
}
if err := client.DialAndSend(message); err != nil {
log.Println(err.Error())
return err;
}
/* var auth smtp.Auth
if r.config.Mailer.SmtpUseAuth {
auth = smtp.PlainAuth(r.config.Mailer.SmtpIdentity, r.config.Mailer.FromAddress, r.config.Mailer.SmtpPassword, r.config.Mailer.SmtpHost)
}
@ -158,8 +183,7 @@ func (r *RequestRepo) sendConfirmationMail(request models.Request) error {
if err != nil {
err = fmt.Errorf("error sending mail by smtp: %w", err)
log.Println(err.Error())
}
return err
}*/
}
return nil
}