faqts : Computers : Programming : Languages : Python : Snippets

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

11 of 28 people (39%) answered Yes
Recently 3 of 10 people (30%) answered Yes

Entry

How to send binary file attachment?

Jul 5th, 2000 10:03
Nathan Wallace, Hans Nowak, Snippet 372, Oleg Broytmann


"""
Packages: networking.mail
"""
#! /usr/local/bin/python -O
import sys, os, string
from mimetools import choose_boundary
from MimeWriter import MimeWriter
import base64
try:
   from cStringIO import StringIO
except ImportError:
   from StringIO import StringIO
def gen_mime(zip_file):
   email_from = "Oleg Broytmann <some@email.addy>"
   email_to = "you@your.some.host"
   #sendmail = open("sendmail", 'w')
   sendmail = os.popen("/usr/sbin/sendmail '%s'" % email_to, 'w')
   sendmail.write("""From: %s
To: %s
Subject: %s
Precedence: bulk
MIME-Version: 1.0
""" % (email_from, email_to, zip_file))
   mime = MimeWriter(sendmail)
   firstpart = mime.startmultipartbody("related")
   firstpart.write("""\
   Your mailer does not support MIME encoding. Please upgarde to MIME-enabled
   mailer (almost every modern mailer is MIME-capable).""")
   subwriter = mime.nextpart()
   subwriter.addheader("Content-Transfer-Encoding", "base64")
   subwriter.addheader("Content-Disposition", "inline; filename=\"%s\"" % zip_file)
   subwriter.startbody("application/zip")
   zip_file = open(zip_file, 'r')
   base64.encode(StringIO(zip_file.read()), sendmail)
   zip_file.close()
   mime.lastpart()
   sendmail.close()
def run():
   zip_file = sys.argv[1]
   gen_mime(zip_file)
if __name__ == '__main__':
   run()