【发布时间】:2021-11-20 08:58:14
【问题描述】:
如何使用 SMTP 协议在 Django 中使用 MailGun 正确发送 batch/bulk/mass emails?
到目前为止我尝试了什么?
- 我使用
django.core.mail.backends.smtp.EmailBackend作为我的EMAIL_BACKEND
这是我尝试发送电子邮件的代码 sn-p。
from django.core.mail import EmailMultiAlternatives
import json
to_emails = [
"mail_1@example.com",
"mail_2@example.com",
"mail_3@example.com",
"mail_4@example.com",
"jerinpetergeorge@gmail.com",
]
mail = EmailMultiAlternatives(
subject="Hey - %recipient.name%",
body="Hey %recipient.name%,\n\nThis is just a batch email test!!!",
from_email="JPG <me@somehost.com>",
to=to_emails,
)
recipient_variables = {
address: {"name": address} for address in to_emails
}
mail.extra_headers["X-Mailgun-Recipient-Variables"] = json.dumps(recipient_variables)
response = mail.send()
print(response)
如我们所见,to 属性填充了所有电子邮件地址,这不是我所期望的.
那么,我如何告诉 Mailgun/Django 正确解析我的变量以使电子邮件看起来更个性化?
备注
- 我更喜欢使用 SMTP 协议
- 我已经尝试过 Mailgun 的 REST API,并且很成功(但是,我更喜欢 SMTP)
- 我找到了django-anymail,似乎它有这个功能。但是,它也使用 API(如果我错了,请纠正我)
更新-1
- 将
to参数更新为to="%recipient%"但是,得到了-
TypeError: "to" 参数必须是列表或元组
-
- 将
to参数更新为to=["%recipient%"]但是,得到了-
smtplib.SMTPRecipientsRefused: {'=?utf-8?q?=25recipient=25?=': (501, b'无效命令或无法解析到地址')}
-
【问题讨论】:
标签: python django email smtp mailgun