Python模块学习——email(实例)

# coding: utf-8
'''
Created on 2013-10-8

@author: Administrator
'''
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()
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 datetime
from Sendmailpro import PySendMail
today = 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)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值