mail.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from django.core import mail as djmail
  2. from django.template.loader import render_to_string
  3. def build_mail(request, recipient, subject, template, context=None):
  4. context = context or {}
  5. context['sender'] = request.user
  6. context['recipient'] = recipient
  7. context['subject'] = subject
  8. message_plain = render_to_string('%s.txt' % template, context, request=request)
  9. message_html = render_to_string('%s.html' % template, context, request=request)
  10. message = djmail.EmailMultiAlternatives(
  11. subject, message_plain, to=[recipient.email])
  12. message.attach_alternative(message_html, "text/html")
  13. return message
  14. def mail_user(request, recipient, subject, template, context=None):
  15. message = build_mail(request, recipient, subject, template, context)
  16. message.send()
  17. def mail_users(request, recipients, subject, template, context=None):
  18. messages = []
  19. for recipient in recipients:
  20. messages.append(build_mail(request, recipient, subject, template, context))
  21. if messages:
  22. send_messages(messages)
  23. def send_messages(messages):
  24. connection = djmail.get_connection()
  25. connection.send_messages(messages)