如何循环发送某些内容以在 Django 中的一封电子邮件中发送

How to loop something to send in one email in Django

我喜欢给自己发送电子邮件,其中包含符合条件的用户名。我的问题是,如果我在 mass_mail 中使用 for 循环,它会在单独的电子邮件中发送每个结果。因此,如果我有 6 个结果,它会发送 6 次电子邮件,每封电子邮件中包含一个结果: (我正在使用 mass_mail 因为将来我想向更多用户发送电子邮件,而不仅仅是我。)

user_weekly.py

from django.core.management.base import BaseCommand
from xy.models import Profile
from django.core.mail import send_mass_mail

recipient_list = Profile.objects.raw('SELECT * FROM auth_user LEFT JOIN xy_profile ON auth_user.id = xy_profile.user_id WHERE email = 1')

messages = [(subject, 'Hello! Users are the following:' + r.last_name, from_email, ['my@email.com]) for r in recipient_list]
send_mass_mail(messages)

在这种情况下,如何才能将所有结果发送到一封电子邮件而不是 6 封单独的电子邮件?

我也试过这样创建一个变量:reclist = r.last_name 但在这种情况下,它只发送一封电子邮件,其中只有一个用户名。

如何在一封电子邮件中获取所有用户的姓名?

您可以尝试按如下方式循环生成字符串

from django.core.management.base import BaseCommand
from xy.models import Profile
from django.core.mail import send_mass_mail

recipient_list = Profile.objects.raw('SELECT * FROM auth_user LEFT JOIN xy_profile ON auth_user.id = xy_profile.user_id WHERE email = 1')

message='Hello! Users are the following: '
for r in recipient_list:
  message+=r.last_name+", "

message=message[2:]

send_mass_mail((subject, message, from_email, 'my@email.com'))