• 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')

  • 相关阅读:
    svn: E120106: ra_serf: The server sent a truncated HTTP response body.
    HTTP method POST is not supported by this URL解决
    TinyOS文件结构清单解析
    Crush Course 神话学笔记
    Django 入门
    Crush Course 心理学笔记
    网络相关知识汇总链接
    9.21 小程序开发培训讲座
    论文简读之LAIA
    Android studio 的那些坑
  • 原文地址:https://www.cnblogs.com/xsmhero/p/2493667.html
Copyright © 2020-2023  润新知