通过 Python、自定义正文群发电子邮件

Mass Email Via Python, Custom Body

Python 的新手,我正在尝试编写群发电子邮件脚本(它将通过 gmail 发送)。

基本上我已经让它工作了,但是我需要分别编辑每个邮件正文,并在电子邮件收件人姓名中添加问候语。目前正文是从 body.txt 文件中读取的,我不确定如何编辑它。示例:

body.txt

Hi <recipient>,

Here is your voucher code.

这是我的脚本,send_email.py:

import smtplib
from email.mime.text import MIMEText

from_address = "xyz@gmail.com"
file = open("body.txt","rb")
message = MIMEText(file.read())
file.close()
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(from_address, "XXXXX")
server.set_debuglevel(1)
sender = from_address
recipients = ['abc@gmail.com', 'def@gmail.com']
message['Subject'] = "Voucher Code"
message['From'] = sender
message['To'] = ", ".join(recipients)
server.sendmail(sender, recipients, message.as_string())

我想我很可能必须创建另一个包含 recipients 名称的列表,并将它们与要发送到的电子邮件地址相匹配,但我不确定如何从那里开始。事实上,我什至不确定这是最好的方法 - 虽然它有效,所以到目前为止我很高兴,除了无法编辑正文。我该如何离开这里?

我看到了你所做的,我认为这是一个很好的开始。在邮件中编辑收件人姓名非常简单。您需要格式化字符串。这是一个例子:

emailBody = "Hello {}, this is my email body. As you can see this program inserts every recipient separately. Hopefully it is helpful. \n"
recipients = ["Ann", "Josh", "Bob", "Marie"]
for recipient in recipients:
    print(emailBody.format(recipient))

主要是你的emailBody必须包含符号{}然后才可以使用

emailBody.format(content)

将某些内容放入括号中。