Change to more powerful mail library that especially adds a correct Date
heeader for us.
This commit is contained in:
parent
3ccbe8ec74
commit
d3cb4bc375
4 changed files with 106 additions and 14 deletions
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue