如何在需要时向所有用户发送电子邮件?我已经构建了一个博客应用,我想向所有用户发送一些有关新闻和更新的电子邮件,但我不知道该怎么做。请帮助我的代码。我正在使用内置的Django用户模型进行身份验证。感谢您的答复
答案 0 :(得分:0)
您可以使用send_mass_mail
一个例子:
from django.contrib.auth import get_user_model
from django.core.mail import send_mass_mail
all_users = get_user_model().objects.all()
data = [
("Subject", "Message", "from@yourdomain.com", [user.email]
for user in all_users
]
send_mass_mail(data)
如果用户数量不多,通常这是一种非常幼稚的方法,如果您不知道自己在做什么,则可能会将邮件服务器列入黑名单。如果您要进行群发邮件,则应使用电子邮件服务,例如mailgun,sendgrid等。
如果要发送HTML内容,则必须改用send_mail
:
from django.contrib.auth import get_user_model
from django.core.mail import send_mail
all_users = get_user_model().objects.all()
for user in all_users:
send_mail(
"Subject",
"Text message",
"from@yourdomain.com",
[user.email],
html_message="<p>HTML message</p>",
)
但这会效率更低。
答案 1 :(得分:0)
您可以使用EmailMultiAlternatives
documentation
all_users = get_user_model().objects.all()
emails = [user.email for user in all_users]
subject, from_email, to = 'hello', 'from@example.com', 'to@example.com'
text_content = 'This is an important message.'
html_content = '<p>This is an <strong>important</strong> message.</p>'
msg = EmailMultiAlternatives(subject, text_content, from_email, emails)
msg.attach_alternative(html_content, "text/html")
msg.send()