Python
Python Send Email
Python. , .

, : . , [].
, . , .
smtplib
Python , - . , , , , , - .
email
Python. , , . email
smtplib
.
.
Python:
- SMTP- .
-
MIMEMultipart
From
(),To
()Subject
(). - .
- SMTP-.
.
, mycontacts.txt
, :
user@computer ~ $ cat mycontacts.txt john johndoe@example.com katie katie2016@example.com
. , . . , . Python .
message.txt
.
user@computer ~ $ cat message.txt Dear ${PERSON_NAME}, This is a test message. Have a great weekend! Yours Truly
${PERSON_NAME}
? Python. ; ${PERSON_NAME}
( ).
Python. mycontacts.txt
. , , .
# Function to read the contacts from a given contact file and return a # list of names and email addresses def get_contacts(filename): names = [] emails = [] with open(filename, mode='r', encoding='utf-8') as contacts_file: for a_contact in contacts_file: names.append(a_contact.split()[0]) emails.append(a_contact.split()[1]) return names, emails
get_contacts()
. , ( ), , . , , .
, ( message.txt
) Template
, .
from string import Template def read_template(filename): with open(filename, 'r', encoding='utf-8') as template_file: template_file_content = template_file.read() return Template(template_file_content)
, .
, , SMTP (Simple Mail Transfer Protocol ). , Python .
# import the smtplib module. It should be included in Python by default import smtplib # set up the SMTP server s = smtplib.SMTP(host='your_host_address_here', port=your_port_here) s.starttls() s.login(MY_ADDRESS, PASSWORD)
smtplib
, SMTP, SMTP-. , SMTP . , Outlook 4 :
s = smtplib.SMTP(host='smtp-mail.outlook.com', port=587)
, , .
MY_ADDRESS
PASSWORD
, , .
, , .
names, emails = get_contacts('mycontacts.txt') # read contacts message_template = read_template('message.txt')
.
# import necessary packages from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText # For each contact, send the email: for name, email in zip(names, emails): msg = MIMEMultipart() # create a message # add in the actual person name to the message template message = message_template.substitute(PERSON_NAME=name.title()) # setup the parameters of the message msg['From']=MY_ADDRESS msg['To']=email msg['Subject']="This is TEST" # add in the message body msg.attach(MIMEText(message, 'plain')) # send the message via the server set up earlier. s.send_message(msg) del msg
name
() email
( ) ( ) MIMEMultipart
, From
(), To
(), Subject
() , MIMEMultipart
. , , MIME
, .
, 10 ${PERSON_NAME}
, Python.
MIMEMultipart
.
, , send_message()
SMTP, .
:
import smtplib from string import Template from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText MY_ADDRESS = 'my_address@example.comm' PASSWORD = 'mypassword' def get_contacts(filename): """ Return two lists names, emails containing names and email addresses read from a file specified by filename. """ names = [] emails = [] with open(filename, mode='r', encoding='utf-8') as contacts_file: for a_contact in contacts_file: names.append(a_contact.split()[0]) emails.append(a_contact.split()[1]) return names, emails def read_template(filename): """ Returns a Template object comprising the contents of the file specified by filename. """ with open(filename, 'r', encoding='utf-8') as template_file: template_file_content = template_file.read() return Template(template_file_content) def main(): names, emails = get_contacts('mycontacts.txt') # read contacts message_template = read_template('message.txt') # set up the SMTP server s = smtplib.SMTP(host='your_host_address_here', port=your_port_here) s.starttls() s.login(MY_ADDRESS, PASSWORD) # For each contact, send the email: for name, email in zip(names, emails): msg = MIMEMultipart() # create a message # add in the actual person name to the message template message = message_template.substitute(PERSON_NAME=name.title()) # Prints out the message body for our sake print(message) # setup the parameters of the message msg['From']=MY_ADDRESS msg['To']=email msg['Subject']="This is TEST" # add in the message body msg.attach(MIMEText(message, 'plain')) # send the message via the server set up earlier. s.send_message(msg) del msg # Terminate the SMTP session and close the connection s.quit() if __name__ == '__main__': main()