mail.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from django.core import mail as djmail
  2. from django.template.loader import render_to_string
  3. from django.utils.translation import get_language
  4. from misago.conf import settings
  5. def build_mail(recipient, subject, template, sender=None, context=None):
  6. context = context.copy() if context else {}
  7. context.update({
  8. 'SITE_ADDRESS': settings.MISAGO_ADDRESS,
  9. 'LANGUAGE_CODE': get_language()[:2],
  10. 'LOGIN_URL': settings.LOGIN_URL,
  11. 'misago_settings': settings,
  12. 'user': recipient,
  13. 'sender': sender,
  14. 'subject': subject,
  15. })
  16. message_plain = render_to_string('%s.txt' % template, context)
  17. message_html = render_to_string('%s.html' % template, context)
  18. message = djmail.EmailMultiAlternatives(subject, message_plain, to=[recipient.email])
  19. message.attach_alternative(message_html, "text/html")
  20. return message
  21. # fixme: rename this function to email_user
  22. def mail_user(recipient, subject, template, sender=None, context=None):
  23. message = build_mail(recipient, subject, template, sender, context)
  24. message.send()
  25. # fixme: rename this function to email_users
  26. def mail_users(recipients, subject, template, sender=None, context=None):
  27. messages = []
  28. for recipient in recipients:
  29. messages.append(build_mail(recipient, subject, template, sender, context))
  30. if messages:
  31. send_messages(messages)
  32. def send_messages(messages):
  33. connection = djmail.get_connection()
  34. connection.send_messages(messages)