1
0
Fork 1
mirror of https://github.com/coddingtonbear/django-mailbox.git synced 2026-07-09 22:38:19 +02:00
django-mailbox/django_mailbox/mail.py
Felix Boehme 76c5e0ea7c Insert Message-ID header before send/store
ensures that in-reply-to finds the original message
2014-12-08 17:34:19 -08:00

49 lines
No EOL
1.8 KiB
Python

from django.core.mail import get_connection, EmailMultiAlternatives, EmailMessage, make_msgid
def record_messages(mailbox, messages, related_object=None):
"""
Used in functions below. Records sent messages in Django Mailbox.
"""
for message in messages:
mailbox.record_outgoing_message(message.message(), related_object)
def send_mass_mail_recorded(datatuple, mailbox, related_object=None, bcc=None,
fail_silently=False, auth_user=None, auth_password=None, connection=None):
"""
Shadows Django's send mass mail, but records each outgoing message to the
specified mailbox.
Also added optional bcc argument.
"""
connection = connection or get_connection(
username=auth_user, password=auth_password, fail_silently=fail_silently
)
messages = [EmailMessage(subject, message, sender, recipient, bcc, headers={'Message-ID': make_msgid()})
for subject, message, sender, recipient in datatuple]
record_messages(mailbox, messages, related_object)
return connection.send_messages(messages)
def send_mass_html_mail_recorded(datatuple, mailbox, related_object=None, bcc=None,
fail_silently=False, user=None, password=None, connection=None):
"""
Like above, but lets you send HTML emails.
"""
connection = connection or get_connection(
username=user, password=password, fail_silently=fail_silently
)
messages = []
for subject, text, html, from_email, recipient in datatuple:
message = EmailMultiAlternatives(subject, text, from_email, recipient, bcc, headers={'Message-ID': make_msgid()})
message.attach_alternative(html, 'text/html')
messages.append(message)
record_messages(mailbox, messages)
return connection.send_messages(messages)