July 2002
Intermediate to advanced
608 pages
15h 46m
English
Credit: Matthew Dixon Cowles
You want to create a multipart MIME message that includes all files in the current directory.
If you often deal with composing or parsing mail messages, or
mail-like messages such as Usenet news posts, the new
email module gives you sparkling new
opportunities:
#!/usr/bin/env python import base64, quopri import mimetypes, email.Generator, email.Message import cStringIO, os # sample addresses toAddr="example@example.com" fromAddr="example@example.com" outputFile="dirContentsMail" def main( ): mainMsg = email.Message.Message( ) mainMsg["To"] = toAddr mainMsg["From"] = fromAddr mainMsg["Subject"] = "Directory contents" mainMsg["Mime-version"] = "1.0" mainMsg["Content-type"] = "Multipart/mixed" mainMsg.preamble = "Mime message\n" mainMsg.epilogue = "" # to ensure that message ends with newline # Get names of plain files (not subdirectories or special files) fileNames = [f for f in os.listdir(os.curdir) if os.path.isfile(f)] for fileName in fileNames: contentType,ignored = mimetypes.guess_type(fileName) if contentType==None: # If no guess, use generic opaque type contentType = "application/octet-stream" contentsEncoded = cStringIO.StringIO( ) f = open(fileName, "rb") mainType = contentType[:contentType.find("/")] if mainType=="text": cte = "quoted-printable" quopri.encode(f, contentsEncoded, 1) # 1 to encode tabs else: cte = "base64" base64.encode(f, contentsEncoded) f.close( ) subMsg = email.Message.Message( ...Read now
Unlock full access