zoukankan      html  css  js  c++  java
  • Python 邮件类

     #-*- MailClassLibrary -*-

    import smtplib
    import os
    import sys
    from email.header import Header
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart 


    class MailClassLibrary:
        def __init__(self, mailType):
            self.mailSendType = mailType
        sender = "xsmhero@aa.com"
        receiverList = ["xsmhero@aa.com"]
        subject = ""
        smtpServer = "www.mail.com"
        userName = "aa@aacom"
        password = "paword"    
        '''  =========================方法================================  '''
        # 中文乱码
        def setChineseGarbled(self, text):
            type = sys.getfilesystemencoding()
            text = text.decode('UTF-8').encode(type)
            return text
        '''  ===========================================================  '''

       
        '''     文件形式的邮件    '''
        def sendContent(self, subject, content):
     msg = MIMEText(content, 'plain', 'utf-8')
     msg['Subject'] = Header(subject, 'utf-8')
     msg['From'] = self.sender
            msg['To'] = ";".join(self.receiverList)

            try:
                sn = smtplib.SMTP()
                sn.connect(self.smtpServer)
                sn.login(self.userName,self.password)
                if(len(self.receiverList) > 1):
                    sn.sendmail(self.sender,self.receiverList ,msg.as_string())
                else:
                    sn.sendmail(self.sender,msg['To'] ,msg.as_string())
                sn.close()
            except Exception, e:
                print str(e)
               
        '''     HTML形式的邮件    '''       
        def sendHtml(self, subject, html):
     msg = MIMEText(html, 'html', 'utf-8')
     msg['Subject'] = Header(subject, 'utf-8')
     msg['From'] = self.sender
            msg['To'] = ";".join(self.receiverList)

            try:
                sn = smtplib.SMTP()
                sn.connect(self.smtpServer)
                sn.login(self.userName,self.password)
                if(len(self.receiverList) > 1):
                    sn.sendmail(self.sender,self.receiverList ,msg.as_string())
                else:
                    sn.sendmail(self.sender,msg['To'] ,msg.as_string())
                sn.close()
            except Exception, e:
                print str(e)

        '''     带图片的HTML邮件    '''
        def sendPicHtml(self, subject, html, picPath):
            picPath = self.setChineseGarbled(picPath)
            msgRoot = MIMEMultipart('related') 
            msgRoot['Subject'] = Header(subject, 'utf-8')
     msgRoot['From'] = self.sender
            msgRoot['To'] = ";".join(self.receiverList)
           
            msgText = MIMEText(html,'html','utf-8') 
            msgRoot.attach(msgText) 
             
            fp = open(picPath, 'rb') 
            msgImage = MIMEImage(fp.read()) 
            fp.close() 
             
            msgImage.add_header('Content-ID', '<image1>') 
            msgRoot.attach(msgImage) 
            try:
                sn = smtplib.SMTP()
                sn.connect(self.smtpServer)
                sn.login(self.userName,self.password)
                if(len(self.receiverList) > 1):
                    sn.sendmail(self.sender,self.receiverList ,msgRoot.as_string())
                else:
                    sn.sendmail(self.sender,msgRoot['To'] ,msgRoot.as_string())
                sn.close()
            except Exception, e:
                print str(e)

       

    '''     带附件的邮件    '''
        def sendAttach(self, subject, content, filePath):
            msgRoot = MIMEMultipart('related')  
            msgRoot['Subject'] = Header(subject, 'utf-8')
    msgRoot['From'] = self.sender
            msgRoot['To'] = ";".join(self.receiverList)
            if(len(self.ccList)>0):
                msg['Cc'] = ";".join(self.ccList)
                msg['Disposition-Notification-To'] = ";".join(self.ccList)
    msgText = MIMEText(content,'html','utf-8') 
            
    msgRoot.attach(msgText)
    #构造附件  
            #注意:传入的参数attfile为unicode,否则带中文的目录或名称的文件读不出来  
            #      basename 为文件名称,由于传入的参数attfile为unicode编码,此处的basename也为unicode编码  
            basename = os.path.basename(filePath)  
            att = MIMEText(open(filePath, 'rb').read(), 'base64', 'utf-8')  
            att["Content-Type"] = 'application/octet-stream'  
            att["Content-Disposition"] = 'attachment; filename="' + basename.encode('utf-8') + '"'  
            msgRoot.attach(att)  
            try:
                sn = smtplib.SMTP()
                sn.connect(self.smtpServer)
                sn.login(self.userName,self.password)
                if(len(self.receiverList) > 1):
                    sn.sendmail(self.sender,self.receiverList ,msgRoot.as_string())
                else:
                    sn.sendmail(self.sender,msgRoot['To'] ,msgRoot.as_string())
                sn.close()
            except Exception, e:
                print str(e)
        '''     带附件的邮件    '''
        def sendAttachs(self, subject, content, filePaths):
            msgRoot = MIMEMultipart('related')  
            msgRoot['Subject'] = Header(subject, 'utf-8')
    msgRoot['From'] = self.sender
            msgRoot['To'] = ";".join(self.receiverList)
            if(len(self.ccList)>0):
                msg['Cc'] = ";".join(self.ccList)
                msg['Disposition-Notification-To'] = ";".join(self.ccList)
    msgText = MIMEText(content,'html','utf-8') 
            
    msgRoot.attach(msgText)
    for i in range(0,len(filePaths)):
       #构造附件
                att = MIMEText(open(filePaths[i], 'rb').read(), 'base64', 'utf-8')
                filePath = os.path.basename(filePaths[i]) 
       att["Content-Type"] = 'application/octet-stream'  
       #att["Content-Disposition"] = 'attachment; filename="' + os.path.basename(filePath) + '"'
       att["Content-Disposition"] = 'attachment; filename="' + filePath.encode('utf-8') + '"'  
       msgRoot.attach(att)  
            
            try:
                sn = smtplib.SMTP()
                sn.connect(self.smtpServer)
                sn.login(self.userName,self.password)
                if(len(self.receiverList) > 1):
                    sn.sendmail(self.sender,self.receiverList ,msgRoot.as_string())
                else:
                    sn.sendmail(self.sender,msgRoot['To'] ,msgRoot.as_string())
                sn.close()
            except Exception, e:
                print str(e)

        '''     基于SSL的邮件    '''
        def sendSSLContent(self, subject, content):
     msg = MIMEText(content, 'text', 'utf-8')
     msg['Subject'] = Header(subject, 'utf-8')
     msg['From'] = self.sender
            msg['To'] = ";".join(self.receiverList)

            try:
                sn = smtplib.SMTP()
                sn.connect(self.smtpServer)
                sn.ehlo()
                sn.starttls()
                sn.ehlo()
                sn.set_debuglevel(1)
                sn.login(self.userName,self.password)
                if(len(self.receiverList) > 1):
                    sn.sendmail(self.sender,self.receiverList ,msg.as_string())
                else:
                    sn.sendmail(self.sender,msg['To'] ,msg.as_string())
                sn.close()
            except Exception, e:
                print str(e)

    #p = MailClassLibrary('text')
    #p.sendAttach('rar','swire.rar','C://Documents and Settings//xusm//桌面//swire.rar')

  • 相关阅读:
    Oracle常用命令大全(很有用,做笔记)
    表格驱动编程在代码中的应用
    mac 利用svn下载远程代码出现Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
    FAILURE: Build failed with an exception.
    There is an internal error in the React performance measurement code.Did not expect componentDidMount timer to start while render timer is still in progress for another instance
    react native TypeError network request failed
    Android向系统相册中插入图片,相册中会出现两张 一样的图片(只是图片大小不一致)
    react-native Unrecognized font family ‘Lonicons’;
    react-native SyntaxError xxxxx/xx.js:Unexpected token (23:24)
    Application MyTest has not been registered. This is either due to a require() error during initialization or failure to call AppRegistry.registerComponent.
  • 原文地址:https://www.cnblogs.com/xsmhero/p/2493667.html
Copyright © 2011-2022 走看看