文章目录

  • 前言
  • 学习python自动化办公目的
  • 未来持续打卡内容
  • 本节思维导图
  • 一、文件与文件的处理
  • 基础知识
  • 文件读写
  • 文件的其他操作
  • 二、python自动发送邮件
  • 方法
  • 自动发送邮件代码
  • 实际操作中可能会遇到问题
  • 打卡课程


前言

学习python自动化办公目的

  • 学会使用python自动化处理文件,减少重复劳动
  • 科学管理文件
  • 能够不再使用别的软件合并、分割PDF等

未来持续打卡内容

  • Task02 Python与excel
  • Task03 Python与word和PDF
  • Task04 简单的Python爬虫
  • Task05 Python操作钉钉自动化
  • Task06 其它推荐软件和网页

本节思维导图

本文不详细介绍函数,简单介绍方法,函数可自行百度,也可看课程GitHub链接

公文写作自动排版代码python python 公文_发送邮件

一、文件与文件的处理

基础知识

  • 知道什么是路径、相对路径、绝对路径的概念
  • 使用python中os.path模块Python os 模块详解可进行路径的处理包括获取当前路径、改变当前路径、路径有效性检查等。

文件读写

  • 使用python自带的open() read()可实现对文件的读写
  • 读写文件3个步骤:
  1. 调用open()函数,返回一个File对象。
  2. 调用File对象的 read() 或 write() 方法。
  3. 调用File对象的 close() 方法,关闭该文件。

文件的其他操作

  • shutil模块 可以复制、移动、改名和删除文件;
  • send2trash模块(第三方)可以将文件或文件夹发送到计算机的垃圾箱或回收站,而不是永久删除
  • zipfile模块中的函数,可以创建和打开(或解压)zip文件;
  • glob是Python自带的一个文件操作相关模块,用它可以查找符合条件的文件。
  • fnmatch是Python自带的库,是专门用来进行文件名匹配的模块,使用它可以完成更为复杂的文件名匹配;
  • hashlib模块,Python自带的hashlib库,可以获取文件MD5值,通过MD5来确定两个文件是不是一样的(用于判断重复文件名是否是同样的文件);

二、python自动发送邮件

方法

邮件发送需要遵守SMTP协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。python内置库:smtplib和email,能够实现邮件功能:

  • smtplib库负责发送邮件
  • email库负责构造邮件格式和内容。

自动发送邮件代码

import smtplib  #导入库
from smtplib import SMTP_SSL  #加密邮件内容,防止中途被截获
from email.mime.text import  MIMEText   #构造邮件的正文
from email.mime.image import MIMEImage  #构造邮件的图片
from email.mime.multipart import MIMEMultipart   #把邮件的各个部分装在一起,邮件的主体
from email.header import Header   #邮件的文件头,标题,收件人

#2 设置邮箱域名、发件人邮箱、邮箱授权码、收件人邮箱
host_server = 'smtp.163.com' #sina 邮箱smtp服务器                 #smtp 服务器的地址
sender_163 = 'pythonauto_emai@163.com'                   #sender_163为发件人的邮箱
pwd = 'DYEPOGLZDZYLOMRI'                    #pwd为邮箱的授权码'DYEPOGLZDZYLOMRI'
#也可以自己注册个邮箱,邮箱授权码'DYEPOGLZDZYLOMRI' 获取方式可参考#http://help.163.com/14/0923/22/A6S1FMJD00754KNP.html

# 设置接受邮箱,换成自己的邮箱即可
receiver 
#3 构建MIMEMultipart对象代表邮件本身,可以往里面添加文本、图片、附件等
msg = MIMEMultipart()    #邮件主体

#4 设置邮件头部内容
mail_title = 'python办公自动化邮件'   # 邮件标题
msg["Subject"] = Header(mail_title,'utf-8')  #装入主体
msg["From"] = sender_163           #寄件人
msg["To"] = Header("测试邮箱",'utf-8') #标题

#5 添加正文文本
mail_content = "您好,这是使用python登录163邮箱发送邮件的测试"   #邮件的正文内容
message_text = MIMEText(mail_content,'plain','utf-8')   #构造文本,参数1:正文内容,参数2:文本格式,参数3:编码方式
msg.attach(message_text)    # 向MIMEMultipart对象中添加文本对象

#6 添加图片
image_data = open('D:\\animals\\cats\\zophie.jpg','rb')   # 二进制读取图片
message_image = MIMEImage(image_data.read())  # 设置读取获取的二进制数据
image_data.close()       # 关闭刚才打开的文件
msg.attach(message_image)  # 添加图片文件到邮件信息当中去

# 7 添加附件(excel表格)
atta = MIMEText(open('D:\\animals\\cats\\cat.xlsx', 'rb').read(), 'base64', 'utf-8')   # 构造附件
atta["Content-Disposition"] = 'attachment; filename="cat.xlsx"'  # 设置附件信息
msg.attach(atta)       ## 添加附件到邮件信息当中去

#8 发送邮件
smtp = SMTP_SSL(host_server)       #SSL登录  创建SMTP对象
smtp.login(sender_163,pwd)         ## 登录邮箱,传递参数1:邮箱地址,参数2:邮箱授权码
smtp.sendmail(sender_163,receiver,msg.as_string()) # 发送邮件,传递参数1:发件人邮箱地址,参数2:收件人邮箱地址,参数3:把邮件内容格式改为str
print("邮件发送成功")
smtp.quit         # 关闭SMTP对象

实际操作中可能会遇到问题

公文写作自动排版代码python python 公文_python_02


一个靠谱的解决方案:Python3报错 smtplib.SMTPHeloError: (500, b’Error)咋办 ?

打卡课程

https://github.com/datawhalechina/office-automation