使用Python smtplib从.txt文件发送电子邮件给多个收件人

5 投票
6 回答
17564 浏览
提问于 2025-04-16 22:52

我想从Python发送邮件到多个邮箱地址,这些地址是从一个.txt文件中导入的。我尝试了不同的写法,但都没有成功...

这是我的代码:

s.sendmail('sender@mail.com', ['recipient@mail.com', 'recipient2@mail.com', 'recipient3@mail.com'], msg.as_string())

所以我尝试从.txt文件中导入收件人的地址:

urlFile = open("mailList.txt", "r+")
mailList = urlFile.read()
s.sendmail('sender@mail.com', mailList, msg.as_string())

mainList.txt文件里包含:

['recipient@mail.com', 'recipient2@mail.com', 'recipient3@mail.com']

但是它不工作...

我还尝试过:

... [mailList] ... in the code, and '...','...','...' in the .txt file, but also no effect

还有

... [mailList] ... in the code, and ...','...','... in the .txt file, but also no effect...

有没有人知道该怎么做?

非常感谢!

6 个回答

2

这需要是真正的列表。所以,在这个文件里:

recipient@mail.com,recipient2@mail.com,recipient3@mail.com

你可以这样做:

mailList = urlFile.read().split(',')
35

这个问题已经有点答案了,但还不够完整。对我来说,问题在于“收件人(To:)”这个头部需要的是一个字符串格式的邮箱,而发送邮件的函数却需要一个列表结构。

# list of emails
emails = ["banjer@example.com", "slingblade@example.com", "dude@example.com"]

# Use a string for the To: header
msg['To'] = ', '.join( emails )

# Use a list for sendmail function
s.sendmail(from_email, emails, msg.as_string() )
3
urlFile = open("mailList.txt", "r+")
mailList = [i.strip() for i in urlFile.readlines()]

把每个收件人放在自己单独的一行上(也就是说,用换行符分开)。

撰写回答