|
This is a program that I wrote using the
third example at 12.2.13 Examples at python.org.
#!/usr/bin/env python
"""Send the contents of a directory as a MIME
message.
Usage: dirmail [options] from to [to
...]*
Options:
-h / --help Print this message and exit. -d
directory
--directory=directory Mail the contents of the specified directory, otherwise use the current directory. Only the regular files in the directory are sent, and we don't recurse to subdirectories. `from' is the email address of the sender of the
message.
`to' is the email address of the recipient of the
message, and multiple
recipients may be given. The email is sent by forwarding to your local SMTP
server, which then does the
normal delivery process. Your local machine must be running an SMTP server. """ import sys
import os import getopt import smtplib # For guessing MIME type based on file name extension import mimetypes from email import Encoders
from email.Message import Message from email.MIMEAudio import MIMEAudio from email.MIMEBase import MIMEBase from email.MIMEMultipart import MIMEMultipart from email.MIMEImage import MIMEImage from email.MIMEText import MIMEText COMMASPACE = ', '
def usage(code, msg=''): print >> sys.stderr, __doc__ if msg: print >> sys.stderr, msg sys.exit(code) def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'C:', ['help', 'directory=']) except getopt.error, msg: usage(1, msg) dir = os.curdir
for opt, arg in opts: if opt in ('-h', '--help'): usage(0) elif opt in ('-d', '--directory'): dir = arg if len(args) <
2:
usage(1) sender = args[0]
recips = args[1:] # Create the enclosing (outer)
message
outer = MIMEMultipart() outer['Subject'] = 'Contents of directory %s' % os.path.abspath('C:\Documents and Settings\User\\My Documents') outer['To'] = COMMASPACE.join('[EMAIL PROTECTED]') outer['From'] = '[EMAIL PROTECTED]' outer.preamble = 'You will not see this in a MIME-aware mail reader.\n' # To guarantee the message ends with a newline outer.epilogue = '' for filename in os.listdir('C:\Documents and
Settings\User'):
path = os.path.join('C:\Documents and Settings\User', 'My Documents') if not os.path.isfile('C:\Documents and Settings\User'): continue # Guess the content type based on the file's extension. Encoding # will be ignored, although we should check for simple things like # gzip'd or compressed files. ctype, encoding = mimetypes.guess_type('C:\Documents and Settings\User\\My Documents') if ctype is None or encoding is not None: # No guess could be made, or the file is encoded (compressed), so # use a generic bag-of-bits type. ctype = 'application/octet-stream' maintype, subtype = ctype.split('/', 1) if maintype == 'text': fp = open('C:\Documents and Settings\User\\My Documents') # Note: we should handle calculating the charset msg = MIMEText(fp.read(), _subtype=subtype) fp.close() elif maintype == 'image': fp = open('C:\Documents and Settings\User\\My Documents', 'rb') msg = MIMEImage(fp.read(), _subtype=subtype) fp.close() elif maintype == 'audio': fp = open('C:\Documents and Settings\User\\My Documents', 'rb') msg = MIMEAudio(fp.read(), _subtype=subtype) fp.close() else: fp = open('C:\Documents and Settings\User\\My Documents', 'rb') msg = MIMEBase(maintype, subtype) msg.set_payload(fp.read()) fp.close() # Encode the payload using Base64 Encoders.encode_base64(msg) # Set the filename parameter msg.add_header('Content-Disposition', 'attachment', filename=filename) outer.attach(msg) # Now send the message
s = smtplib.SMTP() s.connect() __init__(self, host='', port=25, local_hostname=None) s.sendmail('[EMAIL PROTECTED]', '[EMAIL PROTECTED]', outer.as_string()) s.close() if __name__ == '__main__': main() When I run the program using IDLE, I get the
following:
Send the contents of a directory as a MIME message.
Usage: dirmail [options] from to [to ...]*
Options:
-h / --help Print this message and exit. -d directory
--directory=directory Mail the contents of the specified directory, otherwise use the current directory. Only the regular files in the directory are sent, and we don't recurse to subdirectories. `from' is the email address of the sender of the message.
`to' is the email address of the recipient of the message, and
multiple
recipients may be given. The email is sent by forwarding to your local SMTP server, which then does
the
normal delivery process. Your local machine must be running an SMTP server. Traceback (most recent call last):
File "C:\Documents and Settings\User\Desktop\EB2.py", line 125, in ? main() File "C:\Documents and Settings\User\Desktop\EB2.py", line 65, in main usage(1) File "C:\Documents and Settings\User\Desktop\EB2.py", line 48, in usage sys.exit(code) SystemExit: 1 I guess that my first question is how do I get my machine to run an
SMTP server?
Also, I'd like to say that I greatly appreciate all of the help
that I've gotten in the past.
Grady Henry
|
_______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
