add .OriginalMIMEType variable to reply template

This commit is contained in:
Leszek Cimała 2020-01-08 21:44:16 +01:00 committed by Drew DeVault
parent 5255585b3b
commit d238272bdb
4 changed files with 39 additions and 18 deletions

View file

@ -157,6 +157,17 @@ func (reply) Execute(aerc *widgets.Aerc, args []string) error {
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

View file

@ -60,6 +60,12 @@ available always.
Example:
{{.Subject}}
*MIME Type*
MIME Type is available for quoted reply.
- OriginalMIMEType: MIME type info of quoted mail part. Usually
"text/plain" or "text/html".
*Original Message*
When using quoted reply or forward, the original message is available.
It can be used using two functions that are available to templates.

View file

@ -22,9 +22,10 @@ type TemplateData struct {
Date time.Time
Subject string
// Only available when replying with a quote
OriginalText string
OriginalFrom []*mail.Address
OriginalDate time.Time
OriginalText string
OriginalFrom []*mail.Address
OriginalDate time.Time
OriginalMIMEType string
}
func TestTemplateData() TemplateData {
@ -36,9 +37,10 @@ func TestTemplateData() TemplateData {
}
original := models.OriginalMail{
Date: time.Now().Format("Mon Jan 2, 2006 at 3:04 PM"),
From: "John Doe <john@example.com>",
Text: "This is only a test text",
Date: time.Now().Format("Mon Jan 2, 2006 at 3:04 PM"),
From: "John Doe <john@example.com>",
Text: "This is only a test text",
MIMEType: "text/plain",
}
return ParseTemplateData(defaults, original)
@ -47,15 +49,16 @@ func TestTemplateData() TemplateData {
func ParseTemplateData(defaults map[string]string, original models.OriginalMail) TemplateData {
originalDate, _ := time.Parse("Mon Jan 2, 2006 at 3:04 PM", original.Date)
td := TemplateData{
To: parseAddressList(defaults["To"]),
Cc: parseAddressList(defaults["Cc"]),
Bcc: parseAddressList(defaults["Bcc"]),
From: parseAddressList(defaults["From"]),
Date: time.Now(),
Subject: defaults["Subject"],
OriginalText: original.Text,
OriginalFrom: parseAddressList(original.From),
OriginalDate: originalDate,
To: parseAddressList(defaults["To"]),
Cc: parseAddressList(defaults["Cc"]),
Bcc: parseAddressList(defaults["Bcc"]),
From: parseAddressList(defaults["From"]),
Date: time.Now(),
Subject: defaults["Subject"],
OriginalText: original.Text,
OriginalFrom: parseAddressList(original.From),
OriginalDate: originalDate,
OriginalMIMEType: original.MIMEType,
}
return td
}

View file

@ -167,7 +167,8 @@ func FormatAddresses(addrs []*Address) string {
// OriginalMail is helper struct used for reply/forward
type OriginalMail struct {
Date string
From string
Text string
Date string
From string
Text string
MIMEType string
}