summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReto Brunner <reto@labrat.space>2021-02-26 22:08:49 +0100
committerReto Brunner <reto@labrat.space>2021-03-07 14:52:42 +0100
commit413fc431f76585b09845d6b2555f7d85d5667ee3 (patch)
treef88fc728fe4435039dcf18d4c37662abeb770cd6
parentf74605793ef1595cbc139bee4a6ea18cabc498b8 (diff)
downloadaerc-413fc431f76585b09845d6b2555f7d85d5667ee3.zip
add mimeType to OriginalMail struct for both forward and reply
-rw-r--r--commands/msg/forward.go4
-rw-r--r--commands/msg/reply.go29
-rw-r--r--doc/aerc-templates.7.scd2
3 files changed, 23 insertions, 12 deletions
diff --git a/commands/msg/forward.go b/commands/msg/forward.go
index edade6d..ec89bfa 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 778c0ef..2e4a21a 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 1e0c6ec..1d94cf1 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".