2012-04-02 57 views
15

tôi đã kịch bản sau đây để gửi mail bằng pythonthư không được gửi đến mọi người trong CC

import smtplib 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 
import os 

FROMADDR = "[email protected]" 
PASSWORD = 'foo' 

TOADDR = ['[email protected]', '[email protected]'] 
CCADDR = ['[email protected]', '[email protected]'] 

# Create message container - the correct MIME type is multipart/alternative. 
msg   = MIMEMultipart('alternative') 
msg['Subject'] = 'Test' 
msg['From'] = FROMADDR 
msg['To']  = ', '.join(TOADDR) 
msg['Cc']  = ', '.join(CCADDR) 

# Create the body of the message (an HTML version). 
text = """Hi this is the body 
""" 

# Record the MIME types of both parts - text/plain and text/html. 
body = MIMEText(text, 'plain') 

# Attach parts into message container. 
msg.attach(body) 

# Send the message via local SMTP server. 
s = smtplib.SMTP('server.com', 587) 
s.set_debuglevel(1) 
s.ehlo() 
s.starttls() 
s.login(FROMADDR, PASSWORD) 
s.sendmail(FROMADDR, TOADDR, msg.as_string()) 
s.quit() 

Khi tôi sử dụng kịch bản, tôi thấy rằng thư được phân phối cho cả toaddr1toadd2 Tuy nhiên ccaddr1ccaddr2 không nhận được thư nào cả.

Điều thú vị là, khi tôi kiểm tra mail nhận được toaddr1toadd2, nó cho thấy rằng ccaddr1ccaddr2 có mặt trong CC.

Có lỗi nào trong tập lệnh không? Ban đầu tôi nghĩ rằng đây có thể là một vấn đề với máy chủ thư của tôi. Tôi đã thử với Gmail và thấy kết quả tương tự. Tức là, dù tài khoản của nó trong máy chủ thư hiện tại hoặc tài khoản Gmail của tôi trong CC, người nhận sẽ không nhận được thư, mặc dù những người trong trường 'Tới' nhận được đúng và có địa chỉ chính xác được đề cập trong trường CC

Trả lời

28

Tôi nghĩ rằng bạn sẽ cần phải đặt CCADDR với TOADDR khi gửi mail:

s.sendmail(FROMADDR, TOADDR+CCADDR, msg.as_string()) 

Bạn đang thêm một cách chính xác các địa chỉ để thông điệp của bạn, nhưng bạn sẽ cần địa chỉ cc trên phong bì quá.

Từ docs:

Note Các thông số from_addr và to_addrs được sử dụng để xây dựng phong bì thông điệp được sử dụng bởi các đại lý vận tải.

+2

Một điều quan trọng cần lưu ý ở đây là - Đối số bắt buộc là chuỗi từ địa chỉ, danh sách chuỗi địa chỉ (chuỗi trống sẽ được xử lý dưới dạng danh sách có 1 địa chỉ) và chuỗi tin nhắn. Hãy chắc chắn rằng bạn có to_addr là một đối tượng danh sách. – Rishi

3

Bạn đã chỉ định các mục nhập CC trong thư chứ không phải trong phong bì. Đó là công việc của bạn để đảm bảo rằng thư cũng được gửi đến các mục CC và BCC.

+0

Cảm ơn thông tin :) – Pulimon

Các vấn đề liên quan