Split mailing list into chunks of 500 emails to respect Postmark's API limits. Thanks Asaf for pointing this out
parent
df99a03936
commit
62a11e258a
52
send_mail.py
52
send_mail.py
|
@ -5,6 +5,7 @@
|
|||
# ============================ Contributors =========================
|
||||
# Bug & warning fixes
|
||||
# Jacob Bell (@MysteriousJ)
|
||||
# Asaf Gartner
|
||||
#
|
||||
# Emotional Support
|
||||
# Cucui Ganon Rosario
|
||||
|
@ -68,30 +69,39 @@ def sendPostmarkMessage(subject, body, to):
|
|||
}
|
||||
|
||||
messages = []
|
||||
for email in to:
|
||||
message = {
|
||||
"From": POSTMARK_SENDER_EMAIL,
|
||||
"To": email,
|
||||
"TemplateId": POSTMARK_TEMPLATE_ID,
|
||||
"TemplateModel": {
|
||||
"name": SENDER_NAME,
|
||||
"email": POSTMARK_SENDER_EMAIL,
|
||||
"body": body,
|
||||
"subject": subject
|
||||
},
|
||||
"MessageStream": POSTMARK_MESSAGE_STREAM
|
||||
|
||||
# Postmark supports 500 messages per API call.
|
||||
# Split the 'to' list into chunks of 500 or fewer email addresses
|
||||
for i in range(0, len(to), 500):
|
||||
to_chunk = to[i:i+500]
|
||||
|
||||
for email in to_chunk:
|
||||
message = {
|
||||
"From": POSTMARK_SENDER_EMAIL,
|
||||
"To": email,
|
||||
"TemplateId": POSTMARK_TEMPLATE_ID,
|
||||
"TemplateModel": {
|
||||
"name": SENDER_NAME,
|
||||
"email": POSTMARK_SENDER_EMAIL,
|
||||
"body": body,
|
||||
"subject": subject
|
||||
},
|
||||
"MessageStream": POSTMARK_MESSAGE_STREAM
|
||||
}
|
||||
messages.append(message)
|
||||
|
||||
payload = {
|
||||
"Messages": messages
|
||||
}
|
||||
messages.append(message)
|
||||
|
||||
payload = {
|
||||
"Messages": messages
|
||||
}
|
||||
# Debug:
|
||||
# print(json.dumps(payload, indent=4))
|
||||
|
||||
# Debug:
|
||||
# print(json.dumps(payload, indent=4))
|
||||
|
||||
result = requests.post(POSTMARK_API_URL, headers=headers, json=payload)
|
||||
print(result.text)
|
||||
result = requests.post(POSTMARK_API_URL, headers=headers, json=payload)
|
||||
print(result.text)
|
||||
|
||||
# Clear the messages list for the next chunk
|
||||
messages.clear()
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Create a ConfigParser object and read the INI file
|
||||
|
|
Loading…
Reference in New Issue