Как динамически отправлять электронные письма с помощью send_mass_mail в Django нескольким получателям?

Я пытаюсь отправить письмо нескольким получателям, но делаю что-то не так. Я использую цикл for для получения адресов электронной почты от пользователя. Если я печатаю электронные письма, то они имеют такой формат: 'someone@xy.com' и у меня их несколько. Но если я пытаюсь отправить им письмо, только один пользователь получает его

Отправляет письмо каждый раз, если html в urls.py обновлен.

views.py

from django.shortcuts import render
from django.core.mail import send_mass_mail
from somemodels.models import Project
import datetime
import calendar

def emails(request):
    today = datetime.date.today()
    weekday = today.weekday()
    month = datetime.date.today().month
    year = datetime.date.today().year
    cal = calendar.monthrange(year, month)[1]
    firstday = datetime.date.today().replace(day=1)
    subject='hello'
    message='how are you?'
    from_email='myemail@gmail.com'


    for p in Project.objects.raw('SELECT * FROM somemodels_project INNER JOIN auth_user ON auth_user.id = othermodel_project.permitted_users'):
        recipient_list = p.email,
        print(recipient_list)

    if (today == firstday):    
        messages = [(subject, message, from_email, [recipient]) for recipient in recipient_list]
        send_mass_mail(messages) 
    
        print('Successfully sent')
    else:
        print('Not sent') 

    return render(request, 'performance/emails.html')

urls.py

app_name = 'email'
urlpatterns = [

    path('emails/', login_required(views.emails), name='emails'),

]

Получение списка людей, которым нужно отправить письмо

https://docs.djangoproject.com/en/4.0/topics/db/sql/

recipient_list =  Project.objects.raw(...)

Если ваше сообщение не меняется, вы также можете использовать

send_mail(
    subject,
    message,
    from_email,
    [r.email for r in recipient_list],
)

Если вы хотите использовать массовую рассылку, потому что она более эффективна https://docs.djangoproject.com/en/4.0/topics/email/

messages = [(subject, message, from_email, [r.email]) for r in recipient_list]

send_mass_mail(messages) 
Вернуться на верх