diff --git a/internal/user/smtp.go b/internal/user/smtp.go index c16d2d27..09080e54 100644 --- a/internal/user/smtp.go +++ b/internal/user/smtp.go @@ -23,6 +23,7 @@ import ( "encoding/base64" "fmt" "io" + "mime" "net/mail" "runtime" "strings" @@ -419,7 +420,7 @@ func createAttachments( attachment, err := client.UploadAttachment(ctx, addrKR, proton.CreateAttachmentReq{ Filename: att.Name, MessageID: draftID, - MIMEType: rfc822.MIMEType(att.MIMEType), + MIMEType: rfc822.MIMEType(mime.FormatMediaType(att.MIMEType, att.MIMEParams)), Disposition: att.Disposition, ContentID: att.ContentID, Body: att.Data, diff --git a/pkg/message/parser.go b/pkg/message/parser.go index e0aa9445..6d5ee23c 100644 --- a/pkg/message/parser.go +++ b/pkg/message/parser.go @@ -66,6 +66,7 @@ type Attachment struct { Name string ContentID string MIMEType string + MIMEParams map[string]string Disposition proton.Disposition Data []byte } @@ -523,6 +524,7 @@ func parseAttachment(h message.Header, body []byte) (Attachment, error) { return Attachment{}, err } att.MIMEType = mimeType + att.MIMEParams = mimeTypeParams // Prefer attachment name from filename param in content disposition. // If not available, try to get it from name param in content type.