Python 3.2 के रूप में, नवंबर 2011 को जारी की गई, smtplib के send_message
बजाय सिर्फ एक नया फ़ंक्शन है sendmail
, जो To / CC / BCC के साथ काम करना आसान बनाता है। पायथन आधिकारिक ईमेल उदाहरणों से खींचते हुए , कुछ मामूली संशोधनों के साथ, हम प्राप्त करते हैं:
# Import smtplib for the actual sending function
import smtplib
# Import the email modules we'll need
from email.message import EmailMessage
# Open the plain text file whose name is in textfile for reading.
with open(textfile) as fp:
# Create a text/plain message
msg = EmailMessage()
msg.set_content(fp.read())
# me == the sender's email address
# you == the recipient's email address
# them == the cc's email address
# they == the bcc's email address
msg['Subject'] = 'The contents of %s' % textfile
msg['From'] = me
msg['To'] = you
msg['Cc'] = them
msg['Bcc'] = they
# Send the message via our own SMTP server.
s = smtplib.SMTP('localhost')
s.send_message(msg)
s.quit()
हेडर का उपयोग करना ठीक काम करता है, क्योंकि send_message BCC का सम्मान करता है जैसा कि प्रलेखन में उल्लिखित है :
send_message किसी भी Bcc या Resent-Bcc हेडर को प्रेषित नहीं करता है जो संदेश में दिखाई दे सकता है
साथ sendmail
यह संदेश के लिए सीसी हेडर को जोड़ने के लिए एक आम बात थी, इस तरह के रूप में कुछ करने के:
msg['Bcc'] = blind.email@adrress.com
या
msg = "From: from.email@address.com" +
"To: to.email@adress.com" +
"BCC: hidden.email@address.com" +
"Subject: You've got mail!" +
"This is the message body"
समस्या यह है कि, सेंडमेल फ़ंक्शन उन सभी हेडर को समान मानता है, जिसका अर्थ है कि वे बीसीसी के उद्देश्यों को पराजित करते हुए सभी को: और बीसीसी: उपयोगकर्ताओं को भेजे गए (दृश्यमान) प्राप्त करेंगे। समाधान, जैसा कि यहां कई अन्य उत्तरों में दिखाया गया है, हेडर में बीसीसी को शामिल नहीं करना था, और इसके बजाय केवल ईमेल की सूची में पारित किया गया था sendmail
।
चेतावनी यह है कि आपको send_message
एक संदेश ऑब्जेक्ट की आवश्यकता है, जिसका अर्थ है कि आपको email.message
केवल स्ट्रिंग को पास करने के बजाय एक वर्ग आयात करना होगा sendmail
।