记录一下Python 发送邮件的代码,这是半年前写的,不知道现在有什么类库的改动。

类库

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import datetime
 
def SendEmail(self,SendEmailExcelUrl,ProjectName):
       
        sender ='发送人邮箱'
        senderPwd =os.environ.get('EmailPassword') #邮箱密码我这里是放在环境变量中了(Win)
        receivers ='[email protected],[email protected]' #接收人邮箱
        #create a Instance
        message = MIMEMultipart()
        message['From'] = Header("发送人", 'utf-8')
        message['To'] =  Header("邮件内容标题", 'utf-8')
        subject = '邮件标题’
        message['Subject'] = Header(subject, 'utf-8')
        #Message body content
        message.attach(MIMEText(' Dear All, \n\n ××× \n\n Regards, \n ××××××× ', 'plain', 'utf-8'))
        #Send xlsx file
        att = MIMEText(open(SendEmailExcelUrl, 'rb').read(), 'base64', 'utf-8')
        att["Content-Type"] = 'application/octet-stream'
        #Here you can rename the attachments in the message.
        att["Content-Disposition"] = 'attachment; filename="{}.xlsx"'.format(ProjectName)
        message.attach(att)
        try:
            smtpObj = smtplib.SMTP('代理服务器地址','代理服务器端口')
            smtpObj.starttls()
            smtpObj.login(sender, senderPwd)#代理服务器帐号密码验证
            smtpObj.sendmail(sender, receivers, message.as_string())
            #terminating the session
            smtpObj.quit()
            print("Send email successful")
        except  smtplib.SMTPException as e:
            print(e.__doc__,datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
            print(e.__context__,datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

下面是编辑excel 仅仅用于记录

  python编辑excel 还是比较坑的,个人观点。但是我是调用一个接口,该接口返回excel,该excel的样式什么的都有,如果我直接进行保存这样没问题,但是我需要对其加一列然后在保存excel就被破坏了,后来了解到目前该类库对样式的编辑支持的还不是很好

import xlrd
import xlwt
from openpyxl import Workbook ,load_workbook
    def CreateCoreExcel(self,SendEmailExcelUrl,ApiSaveExcelSaveUrl):
        projectConfigJson=self.getProductfigJson()['Core']
        Group= projectConfigJson['Group']
        wb = load_workbook(ApiSaveExcelSaveUrl)
        ws = wb['Vulnerabilities']
        ws.insert_cols(2)
        ws.insert_cols(3)
        for index, row in enumerate(ws.rows):
            if index == 0:
                row[1].value='Group'
                row[2].value='ServiceName'
            else:
                values= row[22].value
                validationValues=True
                try:
                    values.split('\\')
                except Exception as e:
                    print(e.__doc__,datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
                    print(e.__context__,datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
                    validationValues=False
                    print("values not is path values:{}, datetime:{} ".format(values,datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")))
                if validationValues == True:
                    strlist = values.split('\\')
                    serviceName=strlist[3]
                    groupName=""
                    if serviceName in Group['1']:
                        groupName="1"
                    elif serviceName in Group['2']:
                        groupName="2"
                    elif serviceName in Group['3']:
                        groupName="3"
                    else:
                        groupName="OtherGroup"
                    row[1].value=groupName
                    row[2].value=serviceName
                else :
                     row[1].value="N/A"
                     row[2].value="N/A"
        content = []
        index = 1
        for i in range(2,ws.max_row+2):
            contentJson ={}
            for j in range(1,ws.max_column+1):
                contentJson[ws.cell(index,j).value]=ws.cell(i,j).value
            content.append(contentJson)
        jsonstr=json.dumps(content)

        wbnew = Workbook()
        sheet = wbnew.active
        listHead=[]
        data= json.loads(jsonstr)
        for c,i in enumerate(data[0].keys()):
            sheet.cell(row=1,column=c+1,value=i)
            listHead.append(i)
        for r,i in enumerate(data):
            row=r+2
            for c,d in enumerate(listHead):
                sheet.cell(row=row,column=c+1,value=i.get(d,""))
        returnValue=os.path.exists(SendEmailExcelUrl)
        if returnValue==True:
            os.remove(SendEmailExcelUrl)
        wbnew.save(SendEmailExcelUrl)

  该内容只是个人记录。

02-13 04:19