Skip to content

Commit

Permalink
UTF-8 subject now decoded properly
Browse files Browse the repository at this point in the history
  • Loading branch information
DusanKasan committed May 23, 2017
1 parent 0dfe0c6 commit f4376a6
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 20 deletions.
24 changes: 6 additions & 18 deletions parsemail.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func Parse(r io.Reader) (email Email, err error) {
func createEmailFromHeader(header mail.Header) (email Email, err error) {
hp := headerParser{header: &header}

email.Subject = header.Get("Subject")
email.Subject = decodeMimeSentence(header.Get("Subject"))
email.From = hp.parseAddressList(header.Get("From"))
email.Sender = hp.parseAddress(header.Get("Sender"))
email.ReplyTo = hp.parseAddressList(header.Get("Reply-To"))
Expand Down Expand Up @@ -192,7 +192,7 @@ func parseMultipartMixed(msg io.Reader, boundary string) (textBody, htmlBody str
return textBody, htmlBody, attachments, embeddedFiles, err
}

func decodeMimeSentence(s string) (string, error) {
func decodeMimeSentence(s string) string {
result := []string{}
ss := strings.Split(s, " ")

Expand All @@ -210,7 +210,7 @@ func decodeMimeSentence(s string) (string, error) {
result = append(result, w)
}

return strings.Join(result, ""), nil
return strings.Join(result, "")
}

func decodeHeaderMime(header mail.Header) (mail.Header, error) {
Expand All @@ -220,11 +220,7 @@ func decodeHeaderMime(header mail.Header) (mail.Header, error) {

parsedHeaderData := []string{}
for _, headerValue := range headerData {
decodedHeaderValue, err := decodeMimeSentence(headerValue)
if err != nil {
return mail.Header{}, err
}
parsedHeaderData = append(parsedHeaderData, decodedHeaderValue)
parsedHeaderData = append(parsedHeaderData, decodeMimeSentence(headerValue))
}

parsedHeader[headerName] = parsedHeaderData
Expand Down Expand Up @@ -254,11 +250,7 @@ func isEmbeddedFile(part *multipart.Part) bool {
}

func decodeEmbeddedFile(part *multipart.Part) (ef EmbeddedFile, err error) {
cid, err := decodeMimeSentence(part.Header.Get("Content-Id"))
if err != nil {
return
}

cid := decodeMimeSentence(part.Header.Get("Content-Id"))
decoded, err := decodePartData(part)
if err != nil {
return
Expand All @@ -276,11 +268,7 @@ func isAttachment(part *multipart.Part) bool {
}

func decodeAttachment(part *multipart.Part) (at Attachment, err error) {
filename, err := decodeMimeSentence(part.FileName())
if err != nil {
return
}

filename := decodeMimeSentence(part.FileName())
decoded, err := decodePartData(part)
if err != nil {
return
Expand Down
4 changes: 2 additions & 2 deletions parsemail_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ So, "Hello".`,
},
6: {
mailData: data1,
subject: "Test Subject 1",
subject: "Peter Paholík",
from: []mail.Address{
{
Name: "Peter Paholík",
Expand Down Expand Up @@ -499,7 +499,7 @@ func dereferenceAddressList(al []*mail.Address) (result []mail.Address) {
var data1 = `From: =?UTF-8?Q?Peter_Pahol=C3=ADk?= <peter.paholik@gmail.com>
Date: Fri, 7 Apr 2017 09:17:26 +0200
Message-ID: <CACtgX4kNXE7T5XKSKeH_zEcfUUmf2vXVASxYjaaK9cCn-3zb_g@mail.gmail.com>
Subject: Test Subject 1
Subject: =?UTF-8?Q?Peter_Pahol=C3=ADk?=
To: dusan@kasan.sk
Content-Type: multipart/mixed; boundary=f403045f1dcc043a44054c8e6bbf
Expand Down

0 comments on commit f4376a6

Please sign in to comment.