[Checkins] SVN: zopyx.smartprintng.server/trunk/zopyx/smartprintng/server/mail_util.py added

Andreas Jung andreas at andreas-jung.com
Sat Jul 18 03:41:44 EDT 2009


Log message for revision 101979:
  added
  

Changed:
  U   zopyx.smartprintng.server/trunk/zopyx/smartprintng/server/mail_util.py

-=-
Modified: zopyx.smartprintng.server/trunk/zopyx/smartprintng/server/mail_util.py
===================================================================
--- zopyx.smartprintng.server/trunk/zopyx/smartprintng/server/mail_util.py	2009-07-18 07:26:17 UTC (rev 101978)
+++ zopyx.smartprintng.server/trunk/zopyx/smartprintng/server/mail_util.py	2009-07-18 07:41:42 UTC (rev 101979)
@@ -3,31 +3,44 @@
 # (C) 2008, 2009, ZOPYX Ltd & Co. KG, Tuebingen, Germany
 ##########################################################################
 
+import os
 import email.MIMEText
 import email.Header
+import email.MIMEBase
+import email.MIMEMultipart
+from email import Encoders
 from ConfigParser import ConfigParser
 from zope.sendmail.mailer import SMTPMailer
 
-CP = ConfigParser(dict(hostname='localhost',
-                       username=None,
-                       password=None,
-                       no_tls=False,
-                       force_tls=False,
-                       ))
+def makeMailer():
 
-CP.read('email.ini')
+    CP = ConfigParser()
+    CP.read('email.ini')
 
-Mailer = SMTPMailer(hostname=CP.get('mail', 'hostname'),
-                    username=CP.get('mail', 'username'),
-                    password=CP.get('mail', 'password'),
-                    no_tls=CP.getboolean('mail', 'no_tls'),
-                    force_tls=CP.getboolean('mail', 'force_tls'))
+    return SMTPMailer(hostname=CP.get('mail', 'hostname') or 'localhost',
+                        username=CP.get('mail', 'username') or None,
+                        password=CP.get('mail', 'password') or None,
+                        no_tls=CP.getboolean('mail', 'no_tls') or False,
+                        force_tls=CP.getboolean('mail', 'force_tls') or False)
 
-def send_email(sender, recipient, subject, body):
-    msg = email.MIMEText.MIMEText(body.encode('UTF-8'), 'plain', 'UTF-8')
+def send_email(sender, recipient, subject, body, attachments=[]):
+
+    mailer = makeMailer()
+
+    msg = email.MIMEMultipart.MIMEMultipart()
     msg["From"] = sender
     msg["To"] = recipient
     msg["Subject"] = email.Header.Header(subject, 'UTF-8')
-    Mailer.send(sender, [recipient], msg.as_string())
+    msg.attach(email.MIMEText.MIMEText(body.encode('UTF-8'), 'plain', 'UTF-8'))
 
+    for att in attachments:
+        part = email.MIMEBase.MIMEBase('application', "octet-stream")
+        part.set_payload(file(att, 'rb').read())
+        Encoders.encode_base64(part)
+        part.add_header('Content-Disposition', 
+                        'attachment; filename="%s"' % os.path.basename(att))
+        msg.attach(part)
 
+    mailer.send(sender, [recipient], msg.as_string())
+
+



More information about the Checkins mailing list