记录一下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)

  该内容只是个人记录。

Python 发送邮件 and 编辑Excel的更多相关文章

  1. python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)

    简介 本篇文章与前边没有多大关联,就是对前边有关发邮件的总结和梳理.在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下, ...

  2. Python导出数据到Excel表格-NotImplementedError: formatting_info=True not yet implemented

    在使用Python写入数据到Excel表格中时出现报错信息记录:“NotImplementedError: formatting_info=True not yet implemented” 报错分析 ...

  3. Python自动化测试发送邮件太麻烦?!一起聊一聊 Python 发送邮件的3种方式

    1. 前言 发送邮件,我们在平时工作中经用到,做为测试人员,在自动化测试中用的也比较多,需要发送邮件给某领导 SMTP是Python默认的邮件模块,可以发送纯文本.富文本.HTML 等格式的邮件 今天 ...

  4. python发送邮件

    python发送邮件(无附件) ======================================================= #!/usr/bin/env python#coding ...

  5. python发送邮件及附件

    今天给大伙说说python发送邮件,官方的多余的话自己去百度好了,还有一大堆文档说实话不到万不得已的时候一般人都不会去看,回归主题: 本人是mac如果没有按照依赖模块的请按照下面的截图安装 导入模块如 ...

  6. python 发送邮件实例

    留言板回复作者邮件提醒 -----------2016-5-11 15:03:58-- source:python发送邮件实例

  7. 解读Python发送邮件

    解读Python发送邮件 Python发送邮件需要smtplib和email两个模块.也正是由于我们在实际工作中可以导入这些模块,才使得处理工作中的任务变得更加的简单.今天,就来好好学习一下使用Pyt ...

  8. python 发送邮件例子

    想到用python发送邮件 主要是服务器 有时候会产生coredump文件  ,然后因为脚本重启原因,服务器coredump产生后会重启 但是没有主动通知开发人员 想了下可以写个脚本一旦产生cored ...

  9. VSTO学习笔记(五)批量编辑Excel 2010 x64

    原文:VSTO学习笔记(五)批量编辑Excel 2010 x64 近期因为工作的需要,经常要批量处理大量的Excel文件,如果纯手工一个个修改,非常的麻烦,于是写了这么一个帮助类,希望能对你有所帮助. ...

随机推荐

  1. Haskell路线

    @ 知乎 @ <I wish i have learned haskell> ———— 包括: Ranks, forall, Monad/CPS,  monadic parser, FFI ...

  2. Scanner 中next()和nexline()方法的区别

      在java实现字符窗口的输入时,很多人更喜欢选择使用扫描器scanner,它操作起来比较简单.在编程的过程中,我发现用scanner实现字符串的输入有两种方法,一种是next(),另一种是next ...

  3. Spring Cloud Gateway转发Spring WebSocket

    Spring Cloud Gateway转发Spring WebSocket 源码:https://github.com/naah69/SpringCloud-Gateway-WebSocket-De ...

  4. 本地eyoucms搬家

    1.后台数据备份 2.删除install 里面的install.lock 3.清理缓存文件 data - runtime-删除所有文件: 4.项目中的文件全部压缩 即打包完毕:最后再把打包的文件放置到 ...

  5. 记录前端开发vue常见问题,不断更新

    1.点击刷新当天组件 1.可以在query中添加一个时间戳,缺点就是不好看 2.加一个重定向页面redirect页面,然后在beforecreate时this.$router.replace原路径 2 ...

  6. druid + mysql + mybatis 批量更新报错

    首先 批量更新报错 sql injection violation, multi-statement not allow 然后看了博客:https://blog.csdn.net/qq_3634595 ...

  7. angular6 使用tooltip

    准备 为了使用tooltip,可以安装ng-bootstrap组件,它包含两个依赖: angular:5.0以上版本: bootstrap css: 4.0版本. 安装好bootstrap之后,更新a ...

  8. Eclipse properties配置文件中文乱码设置

    1. eclipse中properties的默认编码为  ISO-8859-1, 输入汉字会被转换为unicode 2. 点击  Windows-->preferences  按下图找到更改编码 ...

  9. flask实战-个人博客-数据库-生成虚拟数据 --

    3.生成虚拟数据 为了方便编写程序前台和后台功能,我们在创建数据库模型后就编写生成虚拟数据的函数. 1)管理员 用于生成虚拟管理员信息的fake_admin()函数如下所示: personalBlog ...

  10. android 代码里设置控件属性

    设置字体大小: setTextSize(TypedValue.COMPLEX_UNIT_PX,22); //22像素 setTextSize(TypedValue.COMPLEX_UNIT_SP,22 ...