我尝试将邮件从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...
有谁知道该怎么做?
非常感谢!
答案 0 :(得分:34)
这个问题已得到回答,但并未完全解决。对我来说,问题是“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() )
答案 1 :(得分:3)
urlFile = open("mailList.txt", "r+")
mailList = [i.strip() for i in urlFile.readlines()]
并将每个收件人放在自己的行上(即与换行符分开)。
答案 2 :(得分:2)
sendmail
函数需要一个地址列表,你传递一个字符串。
如果文件中的地址按您的说法格式化,您可以使用eval()
将其转换为列表。
答案 3 :(得分:2)
它需要是一个真实的清单。所以,在文件中有这个:
recipient@mail.com,recipient2@mail.com,recipient3@mail.com
你可以做到
mailList = urlFile.read().split(',')
答案 4 :(得分:0)
to_addrs实际上是所有收件人(to,cc,bcc)的字典,而不仅仅是。
在功能调用中提供所有收件人时,还需要在msg中发送相同收件人的列表,作为每种类型收件人的逗号分隔字符串格式。 (到,CC,BCC)。但是你可以很容易地做到这一点,但要维护单独的列表并组合成字符串或将字符串转换成列表。
以下是示例
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())