mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-17 17:47:03 +00:00
message: Include inlines when returning attachments (#398)
Signed-off-by: James Hillyerd <james@hillyerd.com>
This commit is contained in:
43
etc/swaks-tests/mime-inline.raw
Normal file
43
etc/swaks-tests/mime-inline.raw
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
Subject: Inline attachment
|
||||||
|
From: %FROM_ADDRESS%
|
||||||
|
To: %TO_ADDRESS%
|
||||||
|
Message-ID: <1234@example.com>
|
||||||
|
Date: %DATE%
|
||||||
|
Content-Type: multipart/mixed; boundary=boundary1
|
||||||
|
|
||||||
|
--boundary1
|
||||||
|
Content-Type: text/html; charset=utf-8
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Hello World HTML</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1 style=3D"color:red">Hello World</h1>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
--boundary1
|
||||||
|
Content-Type: application/pdf; name=Hello-World.pdf
|
||||||
|
Content-Transfer-Encoding: base64
|
||||||
|
Content-Disposition: inline; name=Hello-World.pdf;
|
||||||
|
filename=Hello-World.pdf
|
||||||
|
|
||||||
|
JVBERi0xLjQKJcK1wrYKCjEgMCBvYmoKPDwvVGl0bGUoSGVsbG8gV29ybGQpL0F1dGhvcihBZHJp
|
||||||
|
dW0pPj4KZW5kb2JqCgoyIDAgb2JqCjw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAzIDAgUj4+CmVuZG9i
|
||||||
|
agoKMyAwIG9iago8PC9UeXBlL1BhZ2VzL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8
|
||||||
|
PC9Gb250PDwvRjEgNCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0+Pi9LaWRzWzUgMCBSXS9Db3Vu
|
||||||
|
dCAxPj4KZW5kb2JqCgo0IDAgb2JqCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1R5cGUxL0Jhc2VGb250
|
||||||
|
L0hlbHZldGljYS9FbmNvZGluZy9XaW5BbnNpRW5jb2Rpbmc+PgplbmRvYmoKCjUgMCBvYmoKPDwv
|
||||||
|
VHlwZS9QYWdlL1BhcmVudCAzIDAgUi9Db250ZW50cyA2IDAgUj4+CmVuZG9iagoKNiAwIG9iago8
|
||||||
|
PC9MZW5ndGggNTEvRmlsdGVyL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnic03czVDCxUAhJ43IK4TI3
|
||||||
|
UjA3MVMISeHS8EjNyclXCM8vyknRVAjJ4nIN4QIA3FcKuwplbmRzdHJlYW0KZW5kb2JqCgp4cmVm
|
||||||
|
CjAgNwowMDAwMDAwMDAwIDY1NTM2IGYgCjAwMDAwMDAwMTYgMDAwMDAgbiAKMDAwMDAwMDA3MSAw
|
||||||
|
MDAwMCBuIAowMDAwMDAwMTE3IDAwMDAwIG4gCjAwMDAwMDAyNDIgMDAwMDAgbiAKMDAwMDAwMDMz
|
||||||
|
MSAwMDAwMCBuIAowMDAwMDAwMzkwIDAwMDAwIG4gCgp0cmFpbGVyCjw8L1NpemUgNy9JbmZvIDEg
|
||||||
|
MCBSL1Jvb3QgMiAwIFI+PgpzdGFydHhyZWYKNTA5CiUlRU9GCg==
|
||||||
|
|
||||||
|
|
||||||
|
--boundary1--
|
||||||
@@ -63,3 +63,6 @@ swaks $* --data mime-errors.raw
|
|||||||
# IP RCPT domain
|
# IP RCPT domain
|
||||||
swaks $* --to="swaks@[127.0.0.1]" --h-Subject: "IPv4 RCPT Address" --body text.txt
|
swaks $* --to="swaks@[127.0.0.1]" --h-Subject: "IPv4 RCPT Address" --body text.txt
|
||||||
swaks $* --to="swaks@[IPv6:2001:db8:aaaa:1::100]" --h-Subject: "IPv6 RCPT Address" --body text.txt
|
swaks $* --to="swaks@[IPv6:2001:db8:aaaa:1::100]" --h-Subject: "IPv6 RCPT Address" --body text.txt
|
||||||
|
|
||||||
|
# Inline attachment test
|
||||||
|
swaks $* --data mime-inline.raw
|
||||||
|
|||||||
@@ -28,7 +28,9 @@ func New(m event.MessageMetadata, e *enmime.Envelope) *Message {
|
|||||||
|
|
||||||
// Attachments returns the MIME attachments for the message.
|
// Attachments returns the MIME attachments for the message.
|
||||||
func (m *Message) Attachments() []*enmime.Part {
|
func (m *Message) Attachments() []*enmime.Part {
|
||||||
return m.env.Attachments
|
attachments := append([]*enmime.Part{}, m.env.Inlines...)
|
||||||
|
attachments = append(attachments, m.env.Attachments...)
|
||||||
|
return attachments
|
||||||
}
|
}
|
||||||
|
|
||||||
// Header returns the header map for this message.
|
// Header returns the header map for this message.
|
||||||
|
|||||||
@@ -201,6 +201,10 @@ func TestRestMessage(t *testing.T) {
|
|||||||
FileName: "favicon.png",
|
FileName: "favicon.png",
|
||||||
ContentType: "image/png",
|
ContentType: "image/png",
|
||||||
}},
|
}},
|
||||||
|
Inlines: []*enmime.Part{{
|
||||||
|
FileName: "statement.pdf",
|
||||||
|
ContentType: "application/pdf",
|
||||||
|
}},
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
mm.AddMessage("good", msg1)
|
mm.AddMessage("good", msg1)
|
||||||
@@ -236,10 +240,14 @@ func TestRestMessage(t *testing.T) {
|
|||||||
decodedStringEquals(t, result, "header/To/[0]", "fred@fish.com")
|
decodedStringEquals(t, result, "header/To/[0]", "fred@fish.com")
|
||||||
decodedStringEquals(t, result, "header/To/[1]", "keyword@nsa.gov")
|
decodedStringEquals(t, result, "header/To/[1]", "keyword@nsa.gov")
|
||||||
decodedStringEquals(t, result, "header/From/[0]", "noreply@inbucket.org")
|
decodedStringEquals(t, result, "header/From/[0]", "noreply@inbucket.org")
|
||||||
decodedStringEquals(t, result, "attachments/[0]/filename", "favicon.png")
|
decodedStringEquals(t, result, "attachments/[0]/filename", "statement.pdf")
|
||||||
decodedStringEquals(t, result, "attachments/[0]/content-type", "image/png")
|
decodedStringEquals(t, result, "attachments/[0]/content-type", "application/pdf")
|
||||||
decodedStringEquals(t, result, "attachments/[0]/download-link", "http://localhost/serve/mailbox/good/0001/attach/0/favicon.png")
|
decodedStringEquals(t, result, "attachments/[0]/download-link", "http://localhost/serve/mailbox/good/0001/attach/0/statement.pdf")
|
||||||
decodedStringEquals(t, result, "attachments/[0]/view-link", "http://localhost/serve/mailbox/good/0001/attach/0/favicon.png")
|
decodedStringEquals(t, result, "attachments/[0]/view-link", "http://localhost/serve/mailbox/good/0001/attach/0/statement.pdf")
|
||||||
|
decodedStringEquals(t, result, "attachments/[1]/filename", "favicon.png")
|
||||||
|
decodedStringEquals(t, result, "attachments/[1]/content-type", "image/png")
|
||||||
|
decodedStringEquals(t, result, "attachments/[1]/download-link", "http://localhost/serve/mailbox/good/0001/attach/1/favicon.png")
|
||||||
|
decodedStringEquals(t, result, "attachments/[1]/view-link", "http://localhost/serve/mailbox/good/0001/attach/1/favicon.png")
|
||||||
|
|
||||||
if t.Failed() {
|
if t.Failed() {
|
||||||
// Wait for handler to finish logging
|
// Wait for handler to finish logging
|
||||||
|
|||||||
Reference in New Issue
Block a user