Это моя третья рабочая итерация. Предполагается, что у вас есть шаблон электронной почты, например, так:
{% block subject %}{% endblock %}
{% block plain %}{% endblock %}
{% block html %}{% endblock %}
Я рефакторинг для повторения отправки электронной почты по списку по умолчанию, и есть служебные методы для отправки на одно письмо и django.contrib.auth
User
s (один и несколько) Я покрываю, пожалуй, больше, чем мне нужно, но вот, пожалуйста.
Я тоже мог бы переиграть с Python-love.
def email_list(to_list, template_path, context_dict):
from django.core.mail import send_mail
from django.template import loader, Context
nodes = dict((n.name, n) for n in loader.get_template(template_path).nodelist if n.__class__.__name__ == 'BlockNode')
con = Context(context_dict)
r = lambda n: nodes[n].render(con)
for address in to_list:
send_mail(r('subject'), r('plain'), 'from@domain.com', [address,])
def email(to, template_path, context_dict):
return email_list([to,], template_path, context_dict)
def email_user(user, template_path, context_dict):
return email_list([user.email,], template_path, context_dict)
def email_users(user_list, template_path, context_dict):
return email_list([user.email for user in user_list], template_path, context_dict)
Как всегда, если вы можете улучшить это, пожалуйста, сделайте.