Python - eMail
Appearance
SMTP eMail Sending
#!/usr/bin/env python3 # from https://stackoverflow.com/a/64890 from email.mime.text import MIMEText from email.utils import formatdate, make_msgid # this invokes the secure SMTP protocol (port 465, uses SSL) from smtplib import SMTP_SSL as SMTP def smtp_connect(smtp_server, smtp_username, smtp_password): conn = SMTP(smtp_server) conn.set_debuglevel(False) conn.login(smtp_username, smtp_password) if VERBOSE: print("SMTP connected") return conn def smtp_send(smtp_conn, mail_to, mail_subject, mail_body): # typical values for text_subtype are plain, html, xml mail_text_subtype = "plain" msg = MIMEText(mail_body, mail_text_subtype) msg["Date"] = formatdate() # important to add, since not all smtp servers add missing fields msg['Message-ID'] = make_msgid(domain="entorb.net") # same msg["From"] = mail_from msg["To"] = mail_to msg["Subject"] = mail_subject print(msg.as_string()) smtp_conn.sendmail(mail_from, mail_to, msg.as_string()) smtp_conn.quit()
Simple Text Mails
A simple class that can be used to send text messages via eMail.
import smtplib
class Mailer1():
def __init__(self, parent = None):
self.SENDER = 'Sender <sender@host.com>'
self.RECIPIENTS = ['Receiver <receiver@host.com>']
self.smtpserver = 'host.com'
self.AUTHREQUIRED = 0 # if you need to use SMTP AUTH set to 1
self.smtpuser = # for SMTP AUTH, set SMTP username here
self.smtppass = # for SMTP AUTH, set SMTP password here
def send(self, text):
session = smtplib.SMTP(self.smtpserver)
if self.AUTHREQUIRED:
session.login(smtpuser, smtppass)
smtpresult = session.sendmail(self.SENDER, self.RECIPIENTS, text)
session.quit()
Attach Files
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import os
class Mailer2():
def __init__(self, parent = None):
self.SENDER = 'Sender <sender@host.com>'
self.RECIPIENTS = ['Receiver <receiver@host.com>,']
self.smtpserver = 'host.com'
self.AUTHREQUIRED = 0 # if you need to use SMTP AUTH set to 1
self.smtpuser = # for SMTP AUTH, set SMTP username here
self.smtppass = # for SMTP AUTH, set SMTP password here
def send(self, subject, text, files=[]): # files=[]
to = self.RECIPIENTS
assert type(to)==list
assert type(files)==list
msg = MIMEMultipart()
msg['From'] = self.SENDER
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach( MIMEText(text) )
for file in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(file,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(file))
msg.attach(part)
smtp = smtplib.SMTP(self.smtpserver)
if self.AUTHREQUIRED:
smtp.login(self.smtpuser, self.smtppass)
smtp.sendmail(self.SENDER, to, msg.as_string() )
smtp.close()