Python Django电子邮件,发送多封电子邮件取决于电子邮件ID

Python Django电子邮件,发送多封电子邮件取决于电子邮件ID,python,django,email,django-email,Python,Django,Email,Django Email,任何人都知道如何解决我的问题,我与多个收件人DJango电子邮件工作。从我的数据库向多个收件人帐户发送电子邮件正在工作,但现在我想发送电子邮件,电子邮件:正文取决于数据ID 这是电子邮件列表 场景:车牌号123123将发送至示例_email1@gmail.com仅和ABV112将再次发送到示例_email2@gmail.com等等只有在电子邮件中没有分配的车牌才会发送,有人可以帮我解决我的问题。谢谢大家! 自动发送电子邮件脚本: 类主视图(ListView): cstatus=VR.objec

任何人都知道如何解决我的问题,我与多个收件人DJango电子邮件工作。从我的数据库向多个收件人帐户发送电子邮件正在工作,但现在我想发送电子邮件,电子邮件:正文取决于数据ID

这是电子邮件列表

场景:车牌号123123将发送至示例_email1@gmail.com仅和ABV112将再次发送到示例_email2@gmail.com等等只有在电子邮件中没有分配的车牌才会发送,有人可以帮我解决我的问题。谢谢大家!

自动发送电子邮件脚本:

类主视图(ListView):
cstatus=VR.objects.filter(Deadline\u date=datetime.datetime.today(),sent\u email=“No”)
打印(cstatus)
收件人列表=[]
对于cstatus中的收件人:
收件人列表.附加(收件人.电子邮件)
打印(收件人列表)
plate=“”
对于cstatus中的carreg:
印刷品(车牌号)
板=托架板号
如果是盘子!="":
主题='FMS自动电子邮件'
html_message=render_to_string('vr/pms_email.html',{'content':cstatus})
普通消息=带标签(html消息)
from_电子邮件='FMS'
邮件。发送邮件(主题、普通邮件、发件人邮件、收件人列表、html邮件=html邮件、失败邮件=错误)
cstatus.update(已发送电子邮件=“是”)
模型=虚拟现实
上下文\对象\名称='列表'
模板名称='vr/list.html'

您可以在cstatus查询集上使用for循环将电子邮件发送给收件人。没有测试它,但它应该是这样的:

for item in cstatus:
    subject = 'FMS Automated Email'
    html_message = render_to_string('vr/pms_email.html'{'content':item.Plate_no})
    plain_message = item.Plate_no
    recipent_list = [item.email]
    from_email = 'FMS <fms@gmail.com>'
    mail.send_mail(subject, plain_message, from_email, recipient_list, html_message=html_message, fail_silently=False)
    item.update(sent_email="Yes")
对于cstatus中的项目:
主题='FMS自动电子邮件'
html_message=render_to_string('vr/pms_email.html'{'content':item.Plate_no})
普通信息=项目板号
收件人列表=[item.email]
from_电子邮件='FMS'
邮件。发送邮件(主题、普通邮件、发件人邮件、收件人列表、html邮件=html邮件、失败邮件=错误)
项目。更新(已发送\电子邮件=“是”)

根据我对您的查询的理解,这可能是您需要的:

class HomeView(ListView):
    cstatus = VR.objects.filter(Deadline__date = datetime.datetime.today(), sent_email="No")
    print(cstatus)

    recipient_list = {}
    for recipient in cstatus:
        recipient_list[recipient.plate_no] = recipient.email
        print(recipient_list)
        

    for carreg in cstatus:
            print(carreg.plate_no)
            plate = carreg.plate_no

        if plate != "":
            subject = 'FMS Automated Email'
            html_message = render_to_string('vr/pms_email.html', {'content':carreg})  # or use plate for just plate_no
            plain_message = strip_tags(html_message)
            from_email = 'FMS <fms@gmail.com>'
            mail.send_mail(subject, plain_message, from_email, [recipient_list[plate]], html_message=html_message, fail_silently=False)
            cstatus.update(sent_email="Yes")

    model = VR
    context_object_name = 'list'
    template_name = 'vr/list.html'
将上述所有消息结果添加到一个元组中,并将其添加到send_mass_mail中。例如

datatuple = (
    (subject, plain_message, from_email, to_email),
    (subject, plain_message, from_email, to_email)
) # to_mail -> recipient_list[plate]

send_mass_mail(datatuple)

如果我错了,请告诉我。

你好,谢谢。Im不使用群发电子邮件,因为收件人不是默认收件人,它取决于用户输入。我尝试了第一个,但是我得到了一个错误“raise TypeError(“”to“参数必须是列表或元组”)TypeError:“to”参数必须是列表或元组“哦,对不起,我忘了在send_mail函数中添加括号。我编辑了它,请再试一次。谢谢你,我的朋友,给了我很好的解决方案。
datatuple = (
    (subject, plain_message, from_email, to_email),
    (subject, plain_message, from_email, to_email)
) # to_mail -> recipient_list[plate]

send_mass_mail(datatuple)
datatuple = (
    (subject, plain_message, from_email, to_email),
    (subject, plain_message, from_email, to_email)
) # to_mail -> recipient_list[plate]

send_mass_mail(datatuple)