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)
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)
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)