2011-08-04 23 views
5

pythonから複数のメールアドレスにメールを送信しようとしましたが、.txtファイルからインポートしましたが、differend構文を試しましたが、何も動作しませんでした...複数の受信者に電子メールをPython smtplibで.txtファイルから送信

コード:

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

mainList.txtが含まれています:

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

は、だから私は.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関数がそれをリスト構造で必要としていることです。 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は実際にはすべての受信者(に、CC、BCC)だけでなくへの辞書です。

関数呼び出しですべての受信者を指定するときは、受信者の種類ごとにカンマ区切りの文字列形式でmsg内の同じ受信者のリストを送信する必要があります。 (to、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()) 
関連する問題