記錄一下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 ='123@123.com,123@123.com' #接收人郵箱 #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)
該內容只是個人記錄。