예제 #1
0
파일: send.py 프로젝트: fmalina/emails
def email(user, subj, template, context, check_pref=False,
          from_email=settings.DEFAULT_FROM_EMAIL):

    from emails.models import Email
    from subs.models import Subscription

    if user.bounce not in (None, 0, 1):  # 1 bounce is ok, but not more
        return False

    if check_pref:
        c = MailoutCategory.objects.get(pk=check_pref)
        s = MailoutUser.objects.filter(user=user, category=c).first()
        if not s:
            return

    subject = 'Hi %s, %s' % (user.first_name, subj)
    from_email = "%s <%s>" % (settings.NAME, from_email)
    if 'Feedback' in subj:
        subject = subj
    # subject must not contain newlines
    subject = ''.join(subject.splitlines())
    em = Email(to=user, subject=subject, body='')
    em.save()
    # add some generic_context
    context.update(settings.GENERIC_CONTEXT)
    context.update({
        'user': user,
        'subject': subj,  # use original short subject here
        'template': template,  # for tracking
        'em': em,
        'category': check_pref or ''
    })

    body = render_to_string('emails/%s.html' % template, context)
    text = render_as_text(body)

    em.body = '%s<!--\n%s\n-->' % (body, text)
    em.save()
    headers = {
        'List-Unsubscribe': '<mailto:%s>' % UNSUBSCRIBE_EMAIL,
        'X-EMAIL-ID': str(em.pk),
        'X-USER-ID': str(user.pk),
    }
    m = mail.EmailMultiAlternatives(subject, text, from_email,
                                    [user.email], headers=headers)
    m.attach_alternative(body, "text/html")
    # live or test, no sending in dev
    if not settings.DEBUG or hasattr(mail, 'outbox'):
        try:
            m.send()
        except Exception as e:
            logging.basicConfig(filename=settings.LOG)
            logging.warning(e)
            return False
    return True
 def email_script_errors(err_msg):
     """Send error message to us in case of an error.
     """
     email = Email()
     email.sender = get_setting('site', 'global', 'siteemailnoreplyaddress')
     email.sender_display = get_setting('site', 'global', 'sitedisplayname')
     site_url = get_setting('site', 'global', 'siteurl')
 
     now = datetime.now()
     nowstr = time.strftime("%d-%b-%y %I:%M %p", now.timetuple())
     email.recipient = get_script_support_emails()
     if email.recipient:
         email.body = '%s \n\nTime Submitted: %s\n' % (err_msg, nowstr)
         email.content_type = "text"
         email.subject = 'Error Setting Up Campaign Monitor Account on New Site %s' % site_url
         
         email.send()