diff options
author | Reto Brunner <reto@labrat.space> | 2021-02-26 22:08:49 +0100 |
---|---|---|
committer | Reto Brunner <reto@labrat.space> | 2021-03-07 14:52:42 +0100 |
commit | 413fc431f76585b09845d6b2555f7d85d5667ee3 (patch) | |
tree | f88fc728fe4435039dcf18d4c37662abeb770cd6 | |
parent | f74605793ef1595cbc139bee4a6ea18cabc498b8 (diff) | |
download | aerc-413fc431f76585b09845d6b2555f7d85d5667ee3.tar.gz |
add mimeType to OriginalMail struct for both forward and reply
-rw-r--r-- | commands/msg/forward.go | 4 | ||||
-rw-r--r-- | commands/msg/reply.go | 29 | ||||
-rw-r--r-- | doc/aerc-templates.7.scd | 2 |
3 files changed, 23 insertions, 12 deletions
diff --git a/commands/msg/forward.go b/commands/msg/forward.go index edade6d1..ec89bfac 100644 --- a/commands/msg/forward.go +++ b/commands/msg/forward.go @@ -147,6 +147,10 @@ func (forward) Execute(aerc *widgets.Aerc, args []string) error { part = lib.FindFirstNonMultipart(msg.BodyStructure, nil) // if it's still nil here, we don't have a multipart msg, that's fine } + err = addMimeType(msg, part, &original) + if err != nil { + return err + } store.FetchBodyPart(msg.Uid, part, func(reader io.Reader) { buf := new(bytes.Buffer) buf.ReadFrom(reader) diff --git a/commands/msg/reply.go b/commands/msg/reply.go index 778c0efc..2e4a21a7 100644 --- a/commands/msg/reply.go +++ b/commands/msg/reply.go @@ -207,21 +207,16 @@ func (reply) Execute(aerc *widgets.Aerc, args []string) error { // broken (containers only) part = lib.FindFirstNonMultipart(msg.BodyStructure, nil) } + + err = addMimeType(msg, part, &original) + if err != nil { + return err + } + store.FetchBodyPart(msg.Uid, part, func(reader io.Reader) { buf := new(bytes.Buffer) buf.ReadFrom(reader) original.Text = buf.String() - if len(msg.BodyStructure.Parts) == 0 { - original.MIMEType = fmt.Sprintf("%s/%s", - msg.BodyStructure.MIMEType, msg.BodyStructure.MIMESubType) - } else { - // TODO: still will be "multipart/mixed" for mixed mails with - // attachments, fix this after aerc could handle responding to - // such mails - original.MIMEType = fmt.Sprintf("%s/%s", - msg.BodyStructure.Parts[0].MIMEType, - msg.BodyStructure.Parts[0].MIMESubType) - } addTab() }) return nil @@ -275,3 +270,15 @@ func setReferencesHeader(target, parent *mail.Header) error { target.SetMsgIDList("references", refs) return nil } + +// addMimeType adds the proper mime type of the part to the originalMail struct +func addMimeType(msg *models.MessageInfo, part []int, + orig *models.OriginalMail) error { + // caution, :forward uses the code as well, keep that in mind when modifying + bs, err := msg.BodyStructure.PartAtIndex(part) + if err != nil { + return err + } + orig.MIMEType = fmt.Sprintf("%s/%s", bs.MIMEType, bs.MIMESubType) + return nil +} diff --git a/doc/aerc-templates.7.scd b/doc/aerc-templates.7.scd index 1e0c6ec7..1d94cf1c 100644 --- a/doc/aerc-templates.7.scd +++ b/doc/aerc-templates.7.scd @@ -71,7 +71,7 @@ available always. {{.Subject}} *MIME Type* - MIME Type is available for quoted reply. + MIME Type is available for quoted reply and forward. - OriginalMIMEType: MIME type info of quoted mail part. Usually "text/plain" or "text/html". |