2011-08-04 101 views
5

我嘗試從python發送郵件到多個電子郵件地址,從.txt文件導入,我嘗試了differend語法,但沒有任何工作...用Python發送電子郵件到.txt文件的多個收件人smtplib

代碼:

s.sendmail('[email protected]', ['[email protected]', '[email protected]', '[email protected]'], msg.as_string()) 

所以,我想這從.txt文件導入接收者地址:

urlFile = open("mailList.txt", "r+") 
mailList = urlFile.read() 
s.sendmail('[email protected]', mailList, msg.as_string()) 

的mainList.txt包含:

['[email protected]', '[email protected]', '[email protected]'] 

但它不工作...

我也試着做:

... [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... 

有誰知道該怎麼做?

非常感謝!

回答

3
urlFile = open("mailList.txt", "r+") 
mailList = [i.strip() for i in urlFile.readlines()] 

,換上了自己的每個收件人(即帶有換行符分開)。

2

sendmail函數需要一個地址列表,你傳遞一個字符串。

如果文件中的地址按照您的說法格式化,您可以使用eval()將其轉換爲列表。

34

這個問題已被回答,但不完全。對我來說,問題在於「To:」標題需要將電子郵件作爲字符串,並且sendmail函數需要它在列表結構中。

# list of emails 
emails = ["[email protected]", "[email protected]", "[email protected]"] 

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

謝謝。這對我有效。 – aku

0

to_addrs在sendmail的函數調用實際上是所有收件人(收件人,抄送,密送),而不是僅僅的字典。

在提供函數調用中的所有收件人時,還需要爲每種類型的收件人發送msg中的相同收件人列表,以逗號分隔的字符串格式。 (到,CC,BCC)。但你可以輕鬆地做到這一點,但是可以維護單獨的列表並將其組合成字符串或將字符串轉換爲列表。

這裏是例子

TO = "[email protected],[email protected]" 
CC = "[email protected],[email protected]" 
msg['To'] = TO 
msg['CC'] = CC 
s.sendmail(from_email, TO.split(',') + CC.split(','), msg.as_string()) 

TO = ['[email protected]','[email protected]'] 
CC = ['[email protected]','[email protected]'] 
msg['To'] = ",".join(To) 
msg['CC'] = ",".join(CC) 
s.sendmail(from_email, TO+CC, msg.as_string()) 
相關問題