jhillyerd / enmime

MIME mail encoding and decoding package for Go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Invalid characters in attachment name

miknaz opened this issue · comments

What I did:

sent email to my inbox with attachment with such name: imgæ÷ü.
Then I fetched mime and parsed it like this:

envelope, _ := enmime.ReadEnvelope(strings.NewReader(mime))

And this is the part from mime from attachment headers:

Content-Type: image/jpeg; name="=?UTF-8?B?aW1nw6bDt8O8LmpwZWc=?="
Content-Disposition: attachment; filename="=?UTF-8?B?aW1nw6bDt8O8LmpwZWc=?="
Content-Transfer-Encoding: base64
Content-ID: <f_kgbbb1j80>
X-Attachment-Id: f_kgbbb1j80

And also subject and html from mime:

Subject: =?UTF-8?B?aW1nw6bDt8O8IHNmc2RmZHM=?=

Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">img=C3=A6=C3=B7=C3=BC sdfsdfds<br></div>

What I expected:

I expected to get attachment filename parsed correctly.

What I got:

This is the code to get filename, subject, html/text body:

		envelope, _ := enmime.ReadEnvelope(strings.NewReader(mime))
		for _, attachment := range envelope.Attachments {
			log2.Println(attachment.FileName)
		}
		log2.Println(envelope.GetHeader("subject"))
		log2.Println(envelope.HTML)
		log2.Println(envelope.Text)

for attachment filename I got img���.jpeg. But subject and body appears correctly:
Subject: imgæ÷ü sfsdfds
Body:
<div dir="ltr">imgæ÷ü sdfsdfds<br></div>

Release or branch I am using:
the latest 0.8.2
(Please attach a sample message if you feel it will help reproduce the issue)

Received: from mxfront2q.mail.yandex.net (localhost [127.0.0.1])
	by mxfront2q.mail.yandex.net with LMTP id EnPQP5jE1C-IvB2GUJs
	for <email@gmail.com>; Fri, 16 Oct 2020 00:05:50 +0300
Received: from mail.google.com (mail.google.com [44:44:44:44::44])
	by mxq.mail.yandex.net (mxfront/Yandex) with ESMTPS id LaVjYXR-5nKKPs;
	Fri, 16 Oct 2020 00:05:50 +0300
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
	(Client certificate not present)
Return-Path: email@gmail.com
X-Yandex-Front: mxfront2q.mail.yandex.net
X-Yandex-TimeMark: 1602795950.007
Authentication-Results: mxfront2q.mail.yandex.net; spf=pass (mxfront2q.mail.yandex.net: domain of gmail.com designates as permitted sender, rule=[ip6:20:f0:0::/6]) smtp.mail=email@gmail.com; dkim=pass header.i=@gmail.com
X-Yandex-Suid-Status: 1 1201536925
X-Yandex-Spam: 1
X-Yandex-Fwd: ODEzNzI3NDQxMjY2MjMyMDM1MDI4NDU4
Received: by mail.google.com with SMTP id w16ilg.8
        for <email@gmail.com>; Thu, 15 Oct 2020 14:05:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20161025;
        h=mime-version:from:date:message-id:subject:to;
        bh=Bnbs3XhGFlBfldAzYMeh+MXlhSbmkpqe2ssgrcOmkt0=;
        b=bNaFyjQFyVIczLei33TKtcmSEB0s0wutc44Pkfd/SH6tWXwxJqH3Vh4ihJmmiISlwr
         QoXpPF4CDJkGk0RPjYfo+uv05xP9VvD6TqSO2P63C28PTlAmR
         j8C1f48MmaBk405JbiKWxNHmbstQVQq3Jo8DJfEnMkmWGcgySjDU1NcS3e0wqv0MdCZM
         2REx9+I/kHmi3xMS3OoX1Xdx9Lys5R1FB5fSWJIfu+apUvKrnLEQkdPmOsJV+W7IItjF
         8IV4DWPRYqhgEpS8l7shNXiczcMf2Q1IwPuP+VwiApRGZn+g6yCSumbnqz4F4XDzBDml
         GnnQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
        bh=Bnbs3XhGFlBfldAzYMeh+MXlhSbmkpqe2ssgrcOmkt0=;
        b=XQ9Ix3kNIlkPY1FfCIISCrGPAklS4mwjCb2ppLNo16qlqyvHq9/gdw17ugV1NXfMcJ
         rSOvl7dqeYet29nSY3PwTezDWS7B3vn+2nyn
         JpSYcWgn5ZoQvUkezA+ph5nNmPMBwzA1inH0ASZtYpxglchkR1AmKWW8SSCQioXH6Nhq
         KA65ZdVB/6VY4r0Ekx7Y0ZECrPzpnqQH2LC6mhQ+/0mRq1KErWXD1B/4xhVIhPmTvpO/
         0Gqbu+QcUaKIISe1I/h8pbFcsiE36jD5O31uSnVygaK08nlbmc5fmyDaYcnFLEL7xUn+
         Fh2g==
X-Gm-Message-State: AOAM533ZjIZZbOaniBMJx4PV/zHSP/CkKJgna
	AcRJO77hcvZzpTl8qfy/oUM8MY1rgfMeZxnJ43V
X-Google-Smtp-Source: ABdhPJziScHJ9N8xrkoM3+dcAwU3Qj+Cib8dq77yiRzsmUJJj0TRF5tQflsYDY=
X-Received: by 2002:a92:c00c:: with SMTP id q12mr349098ild.274.1602795948328;
 Thu, 15 Oct 2020 14:05:48 -0700 (PDT)
MIME-Version: 1.0
From: Name <email@gmail.com>
Date: Fri, 16 Oct 2020 00:05:37 +0300
Message-ID: <CAARQBnh7gcSMEf=mA7OMcu4zEPZ5ipucv+N9LqrWcJ3Ch+ODkQ@mail.gmail.com>
Subject: =?UTF-8?B?aW1nw6bDt8O8IHNmc2RmZHM=?=
To: email@gmail.com
Content-Type: multipart/mixed; boundary="00000000000026eb4205b1bc0340"
X-Yandex-Forward: 7ca2fcfcfc9f649b55e9fa4023d1de9a

--00000000000026eb4205b1bc0340
Content-Type: multipart/alternative; boundary="00000000000026eb4005b1bc033e"

--00000000000026eb4005b1bc033e
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64

aW1nw6bDt8O8IHNkZnNkZmRzDQo=
--00000000000026eb4005b1bc033e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">img=C3=A6=C3=B7=C3=BC sdfsdfds<br></div>

--00000000000026eb4005b1bc033e--
--00000000000026eb4205b1bc0340
Content-Type: image/jpeg; name="=?UTF-8?B?aW1nw6bDt8O8LmpwZWc=?="
Content-Disposition: attachment; filename="=?UTF-8?B?aW1nw6bDt8O8LmpwZWc=?="
Content-Transfer-Encoding: base64
Content-ID: <f_kgbbb1j80>
X-Attachment-Id: f_kgbbb1j80

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
--00000000000026eb4205b1bc0340--

It works! Sorry, I used 0.8.0 version. Thank you a lot for useful package!!!