aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/email/parser.go
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2022-11-06 19:34:26 +0000
committerAleksandr Nogikh <wp32pw@gmail.com>2022-11-07 11:45:47 +0100
commitb701d8c0b04d88d5ddb26ed292d2e9897f8fec6c (patch)
treee20440c4fa26302554ef3874797898d640623724 /pkg/email/parser.go
parent6d752409f178135881da3510c910bb11ae1f1381 (diff)
pkg/email: add support for Sender extraction
Diffstat (limited to 'pkg/email/parser.go')
-rw-r--r--pkg/email/parser.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/pkg/email/parser.go b/pkg/email/parser.go
index d7bf40a0f..2975d2de7 100644
--- a/pkg/email/parser.go
+++ b/pkg/email/parser.go
@@ -24,6 +24,7 @@ type Email struct {
Subject string
From string
Cc []string
+ Sender string
Body string // text/plain part
Patch string // attached patch, if any
Command Command // command to bot
@@ -97,6 +98,17 @@ func Parse(r io.Reader, ownEmails []string) (*Email, error) {
}
}
ccList = MergeEmailLists(ccList)
+
+ sender := ""
+ senders, err := msg.Header.AddressList("Sender")
+ if err != nil {
+ if err != mail.ErrHeaderNotPresent {
+ return nil, err
+ }
+ } else if len(senders) > 0 {
+ sender = senders[0].Address
+ }
+
body, attachments, err := parseBody(msg.Body, msg.Header)
if err != nil {
return nil, err
@@ -128,6 +140,7 @@ func Parse(r io.Reader, ownEmails []string) (*Email, error) {
Subject: subject,
From: from[0].String(),
Cc: ccList,
+ Sender: sender,
Body: bodyStr,
Patch: patch,
Command: cmd,