Specify mimetype for email attachments

This fixes that some email client might not allow previewing the qrcode image.
This commit is contained in:
Justin van der Krieken 2024-03-04 20:34:10 +01:00
parent 2fdafd34ca
commit 9cb4c26ac5
4 changed files with 5 additions and 4 deletions

View file

@ -3,6 +3,7 @@ package emailer
type Attachment struct {
Name string
Data []byte
MimeType string
}
type Emailer interface {

View file

@ -39,7 +39,7 @@ func (o *SendgridApiMail) Send(toName string, to string, subject string, content
var att mail.Attachment
encoded := base64.StdEncoding.EncodeToString(attachments[i].Data)
att.SetContent(encoded)
att.SetType("text/plain")
att.SetType(attachments[i].MimeType)
att.SetFilename(attachments[i].Name)
att.SetDisposition("attachment")
toAdd = append(toAdd, &att)

View file

@ -91,7 +91,7 @@ func (o *SmtpMail) Send(toName string, to string, subject string, content string
SetBody(mail.TextHTML, content)
for _, v := range attachments {
email.Attach(&mail.File{Name: v.Name, Data: v.Data})
email.Attach(&mail.File{Name: v.Name, Data: v.Data, MimeType: v.MimeType})
}
err = email.Send(smtpClient)

View file

@ -547,14 +547,14 @@ func EmailClient(db store.IStore, mailer emailer.Emailer, emailSubject, emailCon
globalSettings, _ := db.GetGlobalSettings()
config := util.BuildClientConfig(*clientData.Client, server, globalSettings)
cfgAtt := emailer.Attachment{Name: "wg0.conf", Data: []byte(config)}
cfgAtt := emailer.Attachment{Name: "wg0.conf", Data: []byte(config), MimeType: "text/conf"}
var attachments []emailer.Attachment
if clientData.Client.PrivateKey != "" {
qrdata, err := base64.StdEncoding.DecodeString(strings.TrimPrefix(clientData.QRCode, "data:image/png;base64,"))
if err != nil {
return c.JSON(http.StatusInternalServerError, jsonHTTPResponse{false, "decoding: " + err.Error()})
}
qrAtt := emailer.Attachment{Name: "wg.png", Data: qrdata}
qrAtt := emailer.Attachment{Name: "wg.png", Data: qrdata, MimeType: "image/png"}
attachments = []emailer.Attachment{cfgAtt, qrAtt}
} else {
attachments = []emailer.Attachment{cfgAtt}