Python模块学习——email(实例)
来源:互联网 发布:网络计算器在线使用 编辑:程序博客网 时间:2024/05/01 04:08
# coding: utf-8'''Created on 2013-10-8@author: Administrator'''import reimport datetime class PySendMail: def __init__(self,user='mailuser',userpass='mailpass',smtpserver='x.x.x.x',fro='mailuser <mailuser@mailuser.com>'): self.user = user self.userpass = userpass self.smtpserver = smtpserver self.fro = fro def sendmail(self,mailto='',mailsub='',attachtext='',textype='plain',dctype='application/octet-stream',filelist='',login=1,debug=0): import smtplib import mimetypes from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email.MIMEText import MIMEText from email.Utils import COMMASPACE, formatdate from email import Encoders from email.MIMEImage import MIMEImage addrlist1 = re.split('\s*[,|;]\s*',mailto) addrlist = [] for addr in addrlist1: if re.match('\s*\S+@\S+\.\S+',addr): addrlist.append(addr) msg = MIMEMultipart() msg['From'] = self.fro msg['To'] = COMMASPACE.join(addrlist) msg['Date'] = formatdate(localtime=True) msg['Subject'] = mailsub maintype = 'text' if textype == 'plain' or textype == 'html': txtsubtype = textype fpld = MIMEBase (maintype, txtsubtype) fpld.set_payload(attachtext) Encoders.encode_base64(fpld) msg.attach(fpld) mailfilelist = [] if filelist: mailfilelist = re.split('\s*[,|;]\s*',filelist) for adfile in mailfilelist: ctype, encoding = mimetypes.guess_type(adfile) if ctype is None or encoding is not None: ctype = dctype maintype, subtype = ctype.split('/', 1) try: fsock=open(adfile,'rb') fplp = MIMEBase (maintype, subtype) fplp.set_payload(fsock.read()) Encoders.encode_base64(fplp) fsock.close fplp.add_header('Content-Disposition', 'attachment',filename=re.split('/',adfile)[-1]) msg.attach(fplp) except IOError: print 'cant open file: %s ' %adfile smtp = smtplib.SMTP(self.smtpserver) if debug: smtp.debuglevel = 5 if login: smtp.login(self.user,self.userpass) smtp.sendmail(self.fro, addrlist, msg.as_string()) smtp.close()if __name__=='__main__': import datetime today = datetime.date.today().strftime("%A (%a) %d/%m/%Y") m=PySendMail('434632706','*******','smtp.qq.com','434632706 <434632706@qq.com>') m.sendmail('434632706@qq.com>','GEGW DB Report of '+today,'GEGW','plain','application/octet-stream',"C:/1.txt|C:/2.txt",1,0)
转自:http://www.cnblogs.com/captain_jack/archive/2011/01/20/1940207.html
稍微修改
原始代码:
#!/usr/bin/python #Sendmailpro.py import re import datetime class PySendMail: def __init__(self,user='mailuser',userpass='mailpass',smtpserver='x.x.x.x',fro='mailuser <mailuser@mailuser.com>'): self.user = user self.userpass = userpass self.smtpserver = smtpserver self.fro = fro def sendmail(self,mailto='',mailsub='',attachtext='',textype='plain',dctype='application/octet-stream',filelist='',login=1,debug=0): import smtplib import mimetypes from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email.MIMEText import MIMEText from email.Utils import COMMASPACE, formatdate from email import Encoders from email.MIMEImage import MIMEImage addrlist1 = re.split('\s*[,|;]\s*',mailto) addrlist = [] for addr in addrlist1: if re.match('\s*\S+@\S+\.\S+',addr): addrlist.append(addr) msg = MIMEMultipart() msg['From'] = self.fro msg['To'] = COMMASPACE.join(addrlist) msg['Date'] = formatdate(localtime=True) msg['Subject'] = mailsub maintype = 'text' if textype == 'plain' or textype == 'html': txtsubtype = textype fpld = MIMEBase (maintype, txtsubtype) fpld.set_payload(attachtext) Encoders.encode_base64(fpld) msg.attach(fpld) mailfilelist = [] if filelist: mailfilelist = re.split('\s*[,|;]\s*',filelist) for adfile in mailfilelist: ctype, encoding = mimetypes.guess_type(adfile) if ctype is None or encoding is not None: ctype = dctype maintype, subtype = ctype.split('/', 1) try: fsock=open(adfile,'rb') fplp = MIMEBase (maintype, subtype) fplp.set_payload(fsock.read()) Encoders.encode_base64(fplp) fsock.close fplp.add_header('Content-Disposition', 'attachment',filename=re.split('/',adfile)[-1]) msg.attach(fplp) except IOError: print 'cant open file: %s ' %adfile smtp = smtplib.SMTP(self.smtpserver) if debug: smtp.debuglevel = 5 if login: smtp.login(self.user,self.userpass) smtp.sendmail(self.fro, addrlist, msg.as_string()) smtp.close()在其他模块或文件中调用:
import datetimefrom Sendmailpro import PySendMailtoday = datetime.date.today().strftime("%A (%a) %d/%m/%Y") m=PySendMail('jack','password','smtp.gmail.com','jack <jack@gmail.com>')m.sendmail('jack@gmail.com','GEGW DB Report of '+today,'GEGW','plain','application/octet-stream','/tmp/result.txt',1,0)
- Python模块学习——email(实例)
- Python模块学习——email
- Python模块学习--email
- python email模块学习笔记
- python email模块的使用实例
- python的email模块
- python学习笔记——实现收发Email
- python学习笔记——实现收发Email
- Python模块学习——psutil模块
- Python模块学习——win32模块
- Python模块学习——pythoncom模块
- python学习(11)——模块
- python学习——模块
- python学习——模块
- python学习五—模块
- python 学习笔记 Email
- python学习(模块)
- python 用模块email,smtplib发邮件
- OpenGL ES2学习笔记(3)-- 使用Shader
- 解决eclipse不自动提示(Alt+/)
- 这些话,是乔布斯给世间留下的真正伟大礼物
- requestWindowFeature()的应用
- Servlet和JSP的生命周期
- Python模块学习——email(实例)
- C#几个经常用到的字符串的截取、替换
- C# ASP.NET MVC HtmlHelper用法大全
- mfc的命令函数
- 亿android开发一周年记!
- 深入浅出谈cuda
- 动态 分页存储过程 oracle环境(转)
- mysql主从同步配置(windows环境)
- [Unity3D]无缝场景切换解决方案(1) - 简单场景切换