Skip to content

Instantly share code, notes, and snippets.

@edmenendez
Created May 14, 2013 00:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save edmenendez/5572599 to your computer and use it in GitHub Desktop.
Save edmenendez/5572599 to your computer and use it in GitHub Desktop.
Misc Django Utils. Including mail a Django Group
from django.conf import settings
from django.contrib.auth.models import User, Permission
from django.core.mail import EmailMessage, mail_admins, send_mail, EmailMultiAlternatives
from django.db.models import Q
from django.utils.html import strip_tags
def mail_group(codename, subject, message=None, debug=False, html_message=None):
perm = Permission.objects.get(codename=codename) # 'get_billing_emails'
users = User.objects.filter(Q(groups__permissions=perm) | Q(user_permissions=perm)).distinct()
# default html_message to message if missing
if not html_message:
html_message = message
# Default message to html_message if it's missing.
if not message:
message = html_message
message = strip_tags(message)
# Useful info so you know where the email came from
html_message += "\n\nMessage sent because you're a member of the group %s." % codename
message += "\n\nMessage sent because you're a member of the group %s." % codename
# html_message should use <br> instead
html_message = html_message.replace('\n', '<br/>')
if not debug:
emails = [u.email for u in users]
else:
emails = [e[1] for e in settings.ADMINS]
message += "\ndebug is True"
#send_mail(
# subject, message, settings.DEFAULT_FROM_EMAIL, emails,
# fail_silently=False,
#)
msg = EmailMultiAlternatives(subject, message, settings.DEFAULT_FROM_EMAIL, emails)
msg.attach_alternative(html_message, "text/html")
msg.send()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment