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