<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://entorb.net//wiki/index.php?action=history&amp;feed=atom&amp;title=Python_-_eMail</id>
	<title>Python - eMail - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://entorb.net//wiki/index.php?action=history&amp;feed=atom&amp;title=Python_-_eMail"/>
	<link rel="alternate" type="text/html" href="https://entorb.net//wiki/index.php?title=Python_-_eMail&amp;action=history"/>
	<updated>2026-05-06T10:27:27Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://entorb.net//wiki/index.php?title=Python_-_eMail&amp;diff=4840&amp;oldid=prev</id>
		<title>Torben at 20:21, 30 October 2024</title>
		<link rel="alternate" type="text/html" href="https://entorb.net//wiki/index.php?title=Python_-_eMail&amp;diff=4840&amp;oldid=prev"/>
		<updated>2024-10-30T20:21:04Z</updated>

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