2007年01月13日 星期六 16:39
#!/usr/bin/env python # -*- coding: utf-8 -*- 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 from email.Header import Header import smtplib import mimetypes import time import os import sys import getopt def gmail_connect(user, passwd): server = smtplib.SMTP() print server.connect('smtp.gmail.com:587') print server.ehlo() print server.starttls() print server.ehlo() print server.login(user, passwd) return server def gmail_close(server): server.close() def set_header(subject, fr_addr, to_addr): msg = MIMEMultipart() msg['subject'] = Header(subject, 'utf-8') msg['to'] = to_addr msg['from'] = fr_addr msg['date']=time.ctime() msg.preamble = 'You will not see this in a MIME-aware mail reader.\n' msg.epilogue = '' return msg def encode_file(path): fp = open(path, 'rb') data = MIMEText(fp.read(), _subtype='plain', _charset='utf-8') fp.close() return data def encode_attach(path): filename = os.path.split(path)[1] ctype, encoding = mimetypes.guess_type(path) if ctype is None or encoding is not None: ctype = 'application/octet-stream' maintype, subtype = ctype.split('/', 1) if maintype == 'text': fp = open(path) data = MIMEText(fp.read(), _subtype=subtype) fp.close() elif maintype == 'image': fp = open(path, 'rb') data = MIMEImage(fp.read(), _subtype=subtype) fp.close() elif maintype == 'audio': fp = open(path, 'rb') data = MIMEAudio(fp.read(), _subtype=subtype) fp.close() else: fp = open(path, 'rb') data = MIMEBase(maintype, subtype) data.set_payload(fp.read()) fp.close() # Encode the payload using Base64 Encoders.encode_base64(data) data.add_header('Content-Disposition', 'attachment', filename=filename) return data def sendmail(server, msg): str = ''' -- Best Regards, Jetrix Chan ---- jetrixc在gmail.com ''' data = MIMEText(str, _subtype='plain', _charset='utf-8') msg.attach(data) server.sendmail(msg['from'], [msg['to']], msg.as_string()) def _usage(): print '''usage: %s [-he:d] ...''' % os.path.basename(sys.argv[0]) def main(argv, user, passwd, to_addr='jetrixc在gmail.com'): try: opts, args = getopt.getopt(argv[1:], 'he:d', \ ['help', 'eflags', 'dflags']) except getopt.GetoptError: print 'illegal option(s) -- ', str(argv[1:]) sys.exit(1) eflags = dflags = False for o, a in opts: if o == '-h' or o == '--help': _usage() sys.exit(0) if o == '-e' or o == '--eflags': eflags = True to_addr = a if o == '-d' or o == '--dflags': dflags = True print 'Send to...:', to_addr server = gmail_connect(user, passwd) for arg in args: msg = set_header(arg, user+'@gmail.com', to_addr) if dflags == False: msg.attach(encode_file(arg)) sendmail(server, msg) del msg else: if os.path.isfile(arg): msg.attach(encode_attach(arg)) sendmail(server, msg) del msg if os.path.isdir(arg): for filename in os.listdir(arg): path = os.path.join(arg, filename) if not os.path.isfile(path): continue msg.attach(encode_attach(path)) sendmail(server, msg) del msg gmail_close(server) if __name__ == '__main__': main(sys.argv, 'login', 'passwd') -- Best Regards, Jetrix Chan ---- jetrixc在gmail.com
2007年01月14日 星期日 00:54
Very helpful for me! Thanks, Neil Chen 2007/1/13, jetrix chan <jetrixc在gmail.com>: > #!/usr/bin/env python > # -*- coding: utf-8 -*- > > 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 > from email.Header import Header > import smtplib > import mimetypes > import time > > import os > import sys > import getopt > > def gmail_connect(user, passwd): > server = smtplib.SMTP() > print server.connect('smtp.gmail.com:587') > print server.ehlo() > print server.starttls() > print server.ehlo() > print server.login(user, passwd) > return server > > def gmail_close(server): > server.close() > > def set_header(subject, fr_addr, to_addr): > msg = MIMEMultipart() > msg['subject'] = Header(subject, 'utf-8') > msg['to'] = to_addr > msg['from'] = fr_addr > msg['date']=time.ctime() > msg.preamble = 'You will not see this in a MIME-aware mail reader.\n' > msg.epilogue = '' > > return msg > > def encode_file(path): > fp = open(path, 'rb') > data = MIMEText(fp.read(), _subtype='plain', _charset='utf-8') > fp.close() > > return data > > def encode_attach(path): > filename = os.path.split(path)[1] > ctype, encoding = mimetypes.guess_type(path) > if ctype is None or encoding is not None: > ctype = 'application/octet-stream' > maintype, subtype = ctype.split('/', 1) > if maintype == 'text': > fp = open(path) > data = MIMEText(fp.read(), _subtype=subtype) > fp.close() > elif maintype == 'image': > fp = open(path, 'rb') > data = MIMEImage(fp.read(), _subtype=subtype) > fp.close() > elif maintype == 'audio': > fp = open(path, 'rb') > data = MIMEAudio(fp.read(), _subtype=subtype) > fp.close() > else: > fp = open(path, 'rb') > data = MIMEBase(maintype, subtype) > data.set_payload(fp.read()) > fp.close() > # Encode the payload using Base64 > Encoders.encode_base64(data) > data.add_header('Content-Disposition', 'attachment', filename=filename) > > return data > > > def sendmail(server, msg): > str = ''' > -- > Best Regards, > Jetrix Chan > ---- > jetrixc在gmail.com > ''' > data = MIMEText(str, _subtype='plain', _charset='utf-8') > msg.attach(data) > > server.sendmail(msg['from'], [msg['to']], msg.as_string()) > > def _usage(): > print '''usage: %s [-he:d] ...''' % os.path.basename(sys.argv[0]) > > def main(argv, user, passwd, to_addr='jetrixc在gmail.com'): > try: > opts, args = getopt.getopt(argv[1:], 'he:d', \ > ['help', 'eflags', 'dflags']) > except getopt.GetoptError: > print 'illegal option(s) -- ', str(argv[1:]) > sys.exit(1) > > eflags = dflags = False > for o, a in opts: > if o == '-h' or o == '--help': > _usage() > sys.exit(0) > if o == '-e' or o == '--eflags': > eflags = True > to_addr = a > if o == '-d' or o == '--dflags': > dflags = True > > print 'Send to...:', to_addr > server = gmail_connect(user, passwd) > for arg in args: > msg = set_header(arg, user+'@gmail.com', to_addr) > if dflags == False: > msg.attach(encode_file(arg)) > sendmail(server, msg) > del msg > else: > if os.path.isfile(arg): > msg.attach(encode_attach(arg)) > sendmail(server, msg) > del msg > if os.path.isdir(arg): > for filename in os.listdir(arg): > path = os.path.join(arg, filename) > if not os.path.isfile(path): > continue > msg.attach(encode_attach(path)) > > sendmail(server, msg) > del msg > gmail_close(server) > > if __name__ == '__main__': > main(sys.argv, 'login', 'passwd') > > > -- > Best Regards, > Jetrix Chan > ---- > jetrixc在gmail.com > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese
Zeuux © 2025
京ICP备05028076号