Skip to content

Commit

Permalink
Add subject decoder
Browse files Browse the repository at this point in the history
  • Loading branch information
haydenwoodhead committed Apr 3, 2020
1 parent 4573109 commit 52191d3
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion email/smtpmail/smtp.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,17 @@ func (s *SMTPMail) Start(websiteAddr string, db burner.Database, r *mux.Router,
}

func (h *handler) handler(req *smtpsrv.Request) error {
subject, err := decodeSubject(req.Message.Header.Get("Subject"))
if err != nil {
return err
}

partialMsg := burner.Message{
ReceivedAt: time.Now().Unix(),
EmailProviderID: "smtp", // TODO: maybe a better id here? For logging purposes?
Sender: req.From,
From: req.Message.Header.Get("From"),
Subject: req.Message.Header.Get("Subject"),
Subject: subject,
}

cTypeHeader := req.Message.Header.Get("Content-Type")
Expand Down Expand Up @@ -193,6 +198,19 @@ func extractParts(r io.Reader, boundary string) (string, string, error) {
}
}

var wordDecoder = new(mime.WordDecoder)

func decodeSubject(subject string) (string, error) {
if strings.HasPrefix(subject, "=?") {
dec, err := wordDecoder.Decode(subject)
if err != nil {
return "", fmt.Errorf("SMTP.decodeSubject: failed to decode: %w", err)
}
return dec, nil
}
return subject, nil
}

func (h *handler) addressable(user, address string) bool {
if h.isBlacklisted(address) {
return false
Expand Down

0 comments on commit 52191d3

Please sign in to comment.