Skip to content

Commit 72f117b

Browse files
committed
Merge pull request #84 from SparkPost/ISSUE-74
Added support for attachments to Django backend
2 parents 0aa08ed + 816f5f5 commit 72f117b

File tree

2 files changed

+22
-16
lines changed

2 files changed

+22
-16
lines changed

sparkpost/django/message.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,14 @@ def __init__(self, message):
4545
)
4646

4747
if message.attachments:
48-
raise UnsupportedContent(
49-
'The SparkPost Django email backend does not '
50-
'currently support attachment.'
51-
)
48+
formatted['attachments'] = []
49+
for attachment in message.attachments:
50+
filename, content, mimetype = attachment
51+
formatted['attachments'].append({
52+
'name': filename,
53+
'data': content,
54+
'type': mimetype
55+
})
56+
print(message.attachments)
5257

5358
return super(SparkPostMessage, self).__init__(formatted)

test/django/test_message.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
1-
try:
2-
from StringIO import StringIO
3-
except ImportError:
4-
from io import StringIO
5-
6-
import pytest
71
from django.core.mail import EmailMultiAlternatives
82
from django.core.mail.message import EmailMessage
93

10-
from sparkpost.django.exceptions import UnsupportedContent
114
from sparkpost.django.message import SparkPostMessage
125
from .utils import at_least_version
136

@@ -66,13 +59,21 @@ def test_cc_bcc():
6659

6760

6861
def test_attachment():
69-
attachment = StringIO()
70-
attachment.write('hello file')
7162
email_message = EmailMessage(**base_options)
72-
email_message.attach('file.txt', attachment, 'text/plain')
63+
email_message.attach('file.txt', 'test content', 'text/plain')
7364

74-
with pytest.raises(UnsupportedContent):
75-
SparkPostMessage(email_message)
65+
actual = SparkPostMessage(email_message)
66+
expected = dict(
67+
attachments=[
68+
{
69+
'name': 'file.txt',
70+
'data': 'test content',
71+
'type': 'text/plain'
72+
}
73+
]
74+
)
75+
expected.update(base_expected)
76+
assert actual == expected
7677

7778
if at_least_version('1.8'):
7879
def test_reply_to():

0 commit comments

Comments
 (0)