Skip to content

Commit f455b02

Browse files
Merge pull request #87 from themartorana/batch-with-templates
Allow sending batch with templates
2 parents 3b47731 + d9c0f54 commit f455b02

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ build/
1010
env/
1111
.pypirc
1212
MANIFEST
13+
venv
14+
.python-version

postmark/core.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,7 @@ class PMBatchMail(object):
565565
def __init__(self, **kwargs):
566566
self.__api_key = None
567567
self.__messages = []
568+
self.__template = False
568569

569570
acceptable_keys = (
570571
'api_key',
@@ -606,6 +607,15 @@ def __init__(self, **kwargs):
606607
'''
607608
)
608609

610+
template = property(
611+
lambda self: self.__template,
612+
lambda self, value: setattr(self, '_PMBatchMail__template', value),
613+
lambda self: setattr(self, '_PMBatchMail__template', None),
614+
'''
615+
Bool to check send with template
616+
'''
617+
)
618+
609619
def add_message(self, message):
610620
'''
611621
Add a message to the batch
@@ -625,6 +635,10 @@ def _check_values(self):
625635
type and are not missing.
626636
'''
627637
for message in self.__messages:
638+
# Check list of messages to see if sending using templates
639+
if not self.__template and (message.template_id or message.template_model):
640+
self.__template = True
641+
628642
message._check_values()
629643

630644
def send(self, test=None):
@@ -648,9 +662,16 @@ def send(self, test=None):
648662
for message in messages:
649663
json_message.append(message.to_json_message())
650664

665+
if not self.__template:
666+
endpoint_url = __POSTMARK_URL__ + 'email/batch'
667+
payload = json.dumps(json_message, cls=PMJSONEncoder).encode('utf8')
668+
else:
669+
endpoint_url = __POSTMARK_URL__ + 'email/batchWithTemplates'
670+
payload = json.dumps({'Messages': json_message}, cls=PMJSONEncoder).encode('utf8')
671+
651672
req = Request(
652-
__POSTMARK_URL__ + 'email/batch',
653-
json.dumps(json_message, cls=PMJSONEncoder).encode('utf8'),
673+
endpoint_url,
674+
payload,
654675
{
655676
'Accept': 'application/json',
656677
'Content-Type': 'application/json',
@@ -934,7 +955,7 @@ def activate(self, bounce_id):
934955
# print req_url
935956
h1 = HTTPConnection('api.postmarkapp.com')
936957
dta = urlencode({"data": "blank"}).encode('utf8')
937-
req = h1.request(
958+
h1.request(
938959
'PUT',
939960
req_url,
940961
dta,

0 commit comments

Comments
 (0)