Example #1
0
def send_email(subject,
               email,
               template,
               context,
               tags=list(),
               metadata=list(),
               request=None,
               reply_to=settings.DEFAULT_FROM_EMAIL,
               send_at=None):
    """
    Renders template blocks and sends an email.

    :param subject:
    :param email:
    :param template:
    :param context:
    :param tags:
    :param metadata:
    :param request:
    :param reply_to:
    :param send_at:
    :return:
    """
    context.update({
        'STATIC_URL': settings.STATIC_URL,
        'domain': settings.HOSTNAME
    })
    if request:
        context = RequestContext(request, context)

    template = get_template(template)
    html_content = template.render(Context(context))

    text_content = strip_tags(html_content)
    kwargs = dict(
        subject=subject,
        body=text_content.strip(),
        from_email=settings.DEFAULT_FROM_EMAIL,
        to=[email],
        reply_to=[reply_to],
    )
    message = EmailMultiAlternatives(**kwargs)
    message.attach_alternative(html_content, 'text/html')

    # Email tags
    message.tags = tags
    # Email metadata
    message.metadata = metadata

    # datetime.now(utc) + timedelta(hours=1)
    if send_at:
        message.send_at = send_at

    message. async = settings.EMAIL_ASYNC
    message.track_clicks = True
    message.track_opens = True

    message.send(fail_silently=True)
Example #2
0
def send_html_email(context, subject=None,body=None,to=None, html_path=None, send_at=None):

	msg = EmailMultiAlternatives(
		subject=subject,
		body=body,
		from_email="Investor Doyen <*****@*****.**>",
		to=[to],
		# headers={'Reply-To': "Service <*****@*****.**>"} # optional extra headers
	)

	c = Context(context)
	htmly = render_to_string(html_path,c)
	msg.attach_alternative(htmly, "text/html")
	# msg.tags = ["one tag", "two tag", "red tag", "blue tag"]
	# msg.metadata = {'user_id': "8675309"}

	if send_at:
		print send_at
		msg.send_at = send_at

	msg.send()