Как зациклить отправку чего-либо в одном письме в Django
Я хочу отправлять по электронной почте письма, содержащие имена пользователей, которые соответствуют заданным критериям. Моя проблема в том, что если я использую цикл for в mass_mail, то он отправляет каждый результат в отдельном письме. Таким образом, если у меня есть 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'))