2011-08-04 38 views
5

Tôi cố gắng gửi thư từ python đến nhiều địa chỉ email, được nhập từ tệp .txt, tôi đã thử các cú pháp khác, nhưng không có gì hoạt động ...Gửi email tới nhiều người nhận từ tệp .txt với Python smtplib

mã:

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

Vì vậy, tôi đã cố gắng này để nhập người nhận-địa chỉ từ một file .txt:

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

các mainList.txt chứa:

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

Nhưng nó không hoạt động ...

Tôi cũng đã cố gắng để làm:

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

Có ai biết phải làm gì?

Cảm ơn rất nhiều!

Trả lời

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

và đưa từng người nhận ngày của riêng mình dòng (ví dụ tách với một ngắt dòng).

2

Chức năng sendmail yêu cầu danh sách các địa chỉ, bạn chuyển cho nó một chuỗi.

Nếu địa chỉ trong tệp được định dạng như bạn nói, bạn có thể sử dụng eval() để chuyển đổi địa chỉ đó thành danh sách.

34

Câu hỏi này đã được trả lời nhưng không đầy đủ. Vấn đề đối với tôi là tiêu đề "Tới:" muốn các email như một chuỗi và hàm sendmail muốn nó trong cấu trúc danh sách.

# 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

Cảm ơn bạn. Điều này làm việc cho tôi. – aku

0

to_addrs trong lệnh gọi hàm sendmail thực sự là từ điển của tất cả người nhận (tới, cc, bcc) và không chỉ đến.

Trong khi cung cấp tất cả người nhận trong cuộc gọi chức năng, bạn cũng cần gửi danh sách cùng người nhận trong thư dưới dạng định dạng chuỗi được phân tách bằng dấu phẩy cho từng loại người nhận. (đến, cc, bcc). Nhưng bạn có thể làm điều này một cách dễ dàng nhưng duy trì một trong hai danh sách riêng biệt và kết hợp thành chuỗi hoặc chuyển đổi chuỗi thành danh sách.

Dưới đây là những ví dụ

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

hoặc

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()) 
Các vấn đề liên quan