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 := new(bytes.Buffer)
buf.ReadFrom(reader) buf.ReadFrom(reader)
original.Text = buf.String() 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() addTab()
}) })
return nil return nil

View file

@ -60,6 +60,12 @@ available always.
Example: Example:
{{.Subject}} {{.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* *Original Message*
When using quoted reply or forward, the original message is available. When using quoted reply or forward, the original message is available.
It can be used using two functions that are available to templates. It can be used using two functions that are available to templates.

View file

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

View file

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