Example #1
0
    def _send_email(self):
        # bits here stolen from the newsletter app
        html = self.body
        text = html2plaintext(html, encoding="utf-8")

        email = self.email and self.email or self.user.email
        num_sent = send_multipart_mail(
            text,
            html,
            self.subject,
            [email],
            fail_silently=False,
            sender=settings.WELCOME_EMAIL_SENDER,
            bcc=[x[1] for x in settings.ADMINS],
        )
        return bool(num_sent)
Example #2
0
    def _send_email(self):
        # bits here stolen from the newsletter app
        html = self.body
        text = html2plaintext(html, encoding='utf-8')

        email = self.email and self.email or self.user.email
        num_sent = send_multipart_mail(
            text,
            html,
            self.subject,
            [email],
            fail_silently=False,
            sender=settings.WELCOME_EMAIL_SENDER,
            bcc=[x[1] for x in settings.ADMINS],
        )
        return bool(num_sent)
Example #3
0
    def _send_newsletter_to_person(self, person, fail_silently=False,
                                   extra_context={},
                                   dry_run=False,
                                   wrap_html=True):
        """Return tuple of (text, html)
        
        if @wrap_html is False, don't wrap the HTML but return it pure
        """
        # notice the order, this means that the context is overwritten by the 
        # person context if applicable
        extra_context.update(self._get_context_for_person(person))
        self._append_autologin_urls(person, extra_context)
        context = Context(extra_context)
        
        subject = self._render_subject(context)
        html = None
        if self.text_template and self.html_text_template and person.newsletter == 'html':
            text = self._render_text(context)
            html = self._render_html_text(context)
        elif self.text_template:
            text = self._render_text(context)
            html = None
        else:
            html = self._render_html_text(context)
            text = html2plaintext(html, encoding='utf-8')
            if person.newsletter != 'html':
                html = None
                
        if html:
            # now wrap this in the header and footer
            if wrap_html:
                html = self._wrap_html_template(html, context,
                                                settings.NEWSLETTER_HTML_TEMPLATE_BASE)
                
                base_url = None
                domain = Site.objects.get_current().domain
                base_url = 'http://%s' % domain
                       
                if Premailer is None:
                    import warnings
                    warnings.warn("Premailer not installed (http://pypi.python.org/pypi/premailer")
                else:
                    #print html
                    html = Premailer(html, base_url=base_url,
                                     keep_style_tags=False,
                                    ).transform()
                
            if dry_run:
                return subject, text, html
            
            ## XXX: Consider looking into http://www.campaignmonitor.com/testing/
            ## and what it can offer us
            
            from multipart_email import send_multipart_mail
            num_sent = send_multipart_mail(text, html, subject,
                                           [person.user.email],
                                           fail_silently=fail_silently,
                                           sender=settings.NEWSLETTER_SENDER
                                           )

        else:
            if dry_run:
                return subject, text, None
            
            num_sent = send_mail(subject, text, settings.NEWSLETTER_SENDER,
                                [person.user.email],
                                fail_silently=fail_silently)
            
        # Assume that this method is called in non-transactional mode
        # so if the sending fails, we know to set sent=False
        
        sent = bool(num_sent)
        SentLog.objects.create(newsletter=self,
                               user=person.user,
                               subject=subject,
                               send_date=datetime.datetime.now(),
                               sent=sent,
                               to=person.user.email)