| author | gibus |
| Fri, 05 Oct 2012 10:21:07 +0200 | |
| changeset 470 | 077be006891e |
| parent 76 | f35d85b2c760 |
| permissions | -rw-r--r-- |
""" Simple extension of django's EmailMessage to store emails in db """ from cm.cm_settings import CM_EMAIL_SUBJECT_PREFIX from cm.models import Email from cm.utils.i18n import translate_to from django.conf import settings from django.contrib.auth.models import User from django.core.mail import EmailMessage as BaseEmailMessage from django.template.loader import render_to_string LIST_SEP = ' ' class EmailMessage(BaseEmailMessage): def __init__(self, subject='', body='', from_email=None, to=None, bcc=None, connection=None, attachments=None, headers=None): if CM_EMAIL_SUBJECT_PREFIX: subject = CM_EMAIL_SUBJECT_PREFIX + subject BaseEmailMessage.__init__(self, subject, body, from_email, to, bcc, connection, attachments, headers) def send(self, fail_silently=False): # store in db Email.objects.create( from_email = self.from_email, to = LIST_SEP.join(self.to), bcc = LIST_SEP.join(self.bcc), body = self.body, subject = self.subject, message = self.message().as_string() ) # then send for real BaseEmailMessage.send(self,fail_silently) def send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None): """ Easy wrapper for django replacing of send_mail in django.core.mail """ # Email subject *must not* contain newlines subject = ''.join(subject.splitlines()) msg = EmailMessage(subject=subject, body=message, from_email=from_email, to = recipient_list) msg.send(fail_silently) def send_mail_in_language(subject, subject_vars, message_template, message_vars, from_email, recipient_list): """ If obj in recipient_list is user: used preferred_language in profile to send the email """ for user_recipient in recipient_list: if type(user_recipient) == User: lang_code = User.get_profile().preferred_language recipient = User.email else: lang_code = settings.LANGUAGE_CODE recipient = user_recipient processed_subject = translate_to(subject, lang_code) %subject_vars processed_message = translate_to(message_template, lang_code) %message_vars send_mail(processed_subject, processed_message, from_email, recipient)