aboutsummaryrefslogtreecommitdiff
path: root/worker/maildir/message.go
diff options
context:
space:
mode:
Diffstat (limited to 'worker/maildir/message.go')
-rw-r--r--worker/maildir/message.go29
1 files changed, 16 insertions, 13 deletions
diff --git a/worker/maildir/message.go b/worker/maildir/message.go
index b95ec98..b732324 100644
--- a/worker/maildir/message.go
+++ b/worker/maildir/message.go
@@ -7,7 +7,6 @@ import (
"io"
"io/ioutil"
"mime/quotedprintable"
- gomail "net/mail"
"strings"
"github.com/emersion/go-maildir"
@@ -88,7 +87,7 @@ func (m Message) MessageInfo() (*models.MessageInfo, error) {
if err != nil {
return nil, fmt.Errorf("could not get structure: %v", err)
}
- env, err := parseEnvelope(&msg.Header)
+ env, err := parseEnvelope(&mail.Header{msg.Header})
if err != nil {
return nil, fmt.Errorf("could not get envelope: %v", err)
}
@@ -237,8 +236,8 @@ func parseEntityStructure(e *message.Entity) (*models.BodyStructure, error) {
return &body, nil
}
-func parseEnvelope(h *message.Header) (*models.Envelope, error) {
- date, err := gomail.ParseDate(h.Get("date"))
+func parseEnvelope(h *mail.Header) (*models.Envelope, error) {
+ date, err := h.Date()
if err != nil {
return nil, fmt.Errorf("could not parse date header: %v", err)
}
@@ -258,10 +257,18 @@ func parseEnvelope(h *message.Header) (*models.Envelope, error) {
if err != nil {
return nil, fmt.Errorf("could not read bcc address: %v", err)
}
+ subj, err := h.Subject()
+ if err != nil {
+ return nil, fmt.Errorf("could not read subject: %v", err)
+ }
+ msgID, err := h.Text("message-id")
+ if err != nil {
+ return nil, fmt.Errorf("could not read message id: %v", err)
+ }
return &models.Envelope{
Date: date,
- Subject: h.Get("subject"),
- MessageId: h.Get("message-id"),
+ Subject: subj,
+ MessageId: msgID,
From: from,
To: to,
Cc: cc,
@@ -269,15 +276,11 @@ func parseEnvelope(h *message.Header) (*models.Envelope, error) {
}, nil
}
-func parseAddressList(h *message.Header, key string) ([]*models.Address, error) {
+func parseAddressList(h *mail.Header, key string) ([]*models.Address, error) {
var converted []*models.Address
- hdr := h.Get(key)
- if strings.TrimSpace(hdr) == "" {
- return converted, nil
- }
- addrs, err := gomail.ParseAddressList(hdr)
+ addrs, err := h.AddressList(key)
if err != nil {
- if strings.Index(hdr, "@") < 0 {
+ if hdr, err := h.Text(key); err != nil && strings.Index(hdr, "@") < 0 {
return []*models.Address{&models.Address{
Name: hdr,
}}, nil