python - 通过 Mailgun 将多封电子邮件发送到字典列表
问题描述
我有一个字典列表,我试图在为 Mailgun 发送电子邮件时为“to”参数传递这些字典。像这样:
users = [{'User': entry.name.value, 'Email': entry.mail.value, 'Number': entry.telephoneNumber.value,'Days': days_left.days}]
此外,days_left 只是我做的一些数学运算,减去了他们上次设置密码的时间 - 今天..
days_left = (pwd_expire_date.astimezone(tz=None) - today)
我的功能如下所示:
def send_email():
for d in notify_users:
return requests.post(
"https://api.mailgun.net/v3/MYDOMAIN/messages", auth=("api", "MAILGUN_API_KEY"),
data={"from": "IT <mailgun@MYDOMAIN>",
"to": d['Email'],
"subject": "Password Reminder",
"text": f"Hello {d['User']}, you have {d['days']} days left to reset your password. -IT"})
for d in expired_users:
return requests.post(
"https://api.mailgun.net/v3/MYDOMAIN/messages", auth=("api", "MAILGUN_API_KEY"),
data={"from": "IT <mailgun@MYDOMAIN>",
"to": d['Email'],
"subject": "Password Reminder",
"text": f"Hello {d['User']}, your password has expired, please change it asap. -IT"})
send_email()
在“to”值中传入字典似乎只允许列表中的第一封电子邮件,这不是我想要的。我一定在做一些语法错误的事情。我知道您可以将每个单独的电子邮件传递到 to 字段,它会以这种方式工作,但是有没有将字典列表传递到 to 字段?此方法在 Twilio API 中有效,用于发送多条短信,但 Mailgun 似乎不喜欢它。
我的脚本用于在用户需要重置密码 30、15、3 天时发送密码提醒。notify_users 是任何仍然有有效密码但只需要提醒的人, expired_users 是任何密码不再有效的人。我想传递的每封电子邮件的名称,以及该特定用户的剩余天数。这样做的语法是正确的,因为我已经发送了测试电子邮件并且它传递了正确的值。我只是未能将字典列表作为 to 参数传递。如果有人有任何见解,那将非常有帮助。
这是我希望得到的预期结果:
each user in the list, for both expired users and users receives a unique email.
'Hello John Apple, you have 15 days left to reset your password. - IT'
'Hello Sandy Cheeks, your password has expired, please change it asap - IT'
解决方案
推荐阅读
- javascript - 如何使输入字段只接受数字
- c# - 是否可以从不活跃的广告中检索 Facebook 潜在客户?
- spring - 如何在 spring-boot 应用程序启动期间创建许多 kafka 主题?
- c++ - Windows 10 下 Winhttp SSL 的问题
- extjs - 如何在组合框中添加树
- java - 如何修复休眠异常 - 不要更改对启用了删除孤儿的集合的引用
- linux - 从每个数组中交替打印十个值,直到两者都为空
- python - 如何在 Pyspark 中将字符串更改为时间戳?
- variables - 如何处理源数据库中名称相同的字段,仅按标签名称区分?
- android - Android 哪个属性设置为绑定 onScrollChanged()