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

Posted

技术标签:

【中文标题】使用 Python smtplib 从 .txt 文件向多个收件人发送电子邮件【英文标题】:Send Email to multiple recipients from .txt file with Python smtplib 【发布时间】:2011-10-19 23:40:44 【问题描述】:

我尝试将邮件从 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...

有人知道该怎么做吗?

非常感谢!

【问题讨论】:

【参考方案1】:

sendmail 函数需要一个地址列表,您正在向它传递一个字符串。

如果文件中的地址如您所说的那样格式化,您可以使用eval() 将其转换为列表。

【讨论】:

【参考方案2】:
urlFile = open("mailList.txt", "r+")
mailList = [i.strip() for i in urlFile.readlines()]

并将每个收件人放在自己的上(即用换行符分隔)。

【讨论】:

【参考方案3】:

它必须是一个真实的列表。所以,在文件中有这个:

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

你可以的

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

【讨论】:

【参考方案4】:

这个问题已经回答了,但还没有完全回答。我的问题是“To:”标头希望电子邮件作为字符串,而 sendmail 函数希望它在列表结构中。

# 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() )

【讨论】:

【参考方案5】:

sendmail 函数调用中的 to_addrs 实际上是所有收件人(to、cc、bcc)的字典,而不仅仅是 to。

在函数调用中提供所有收件人的同时,您还需要在 msg 中以逗号分隔的字符串格式为每种收件人发送相同收件人的列表。 (到,抄送,密送)。但是您可以轻松地做到这一点,但要维护单独的列表并组合成字符串或将字符串转换成列表。

这里是例子

TO = "1@to.com,2@to.com"
CC = "1@cc.com,2@cc.com"
msg['To'] = TO
msg['CC'] = CC
s.sendmail(from_email, TO.split(',') + CC.split(','), msg.as_string())

TO = ['1@to.com','2@to.com']
CC = ['1@cc.com','2@cc.com']
msg['To'] = ",".join(To)
msg['CC'] = ",".join(CC)
s.sendmail(from_email, TO+CC, msg.as_string())

【讨论】:

以上是关于使用 Python smtplib 从 .txt 文件向多个收件人发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

python smtplib使用

python之使用smtplib模块发送邮件

使用 Python 示例发送电子邮件失败

python & smtplib:是不是可以使用 oauth2 通过 gmail 发送邮件?

python & smtplib:是不是可以使用 oauth2 通过 gmail 发送邮件?

python 蟒蛇邮件模块的smtplib的使用