python发邮件添加附件(十)

司寇安宜
2023-12-01

#一、python发邮件添加附件
这是一个神奇的工具,要好好学哦 !!!

import  smtplib

# 1.发送人账号
sendAddress = 'xxx@qq.com'
# 2.发送人授权码
password = 'sdgalkglkh' (乱写的 要去QQ邮箱找自己的哦)
# 3.连通服务器
# 465端口就是
server = smtplib.SMTP_SSL('smtp.qq.com', 465)
print(server)
# 4.登录
loginResult = server.login(sendAddress, password)
print(loginResult)
# (235, b'Authentication successful') 这样子的代表你登陆成功了
# 235响应成功状态码

# 构造添加附件的邮件
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# 1定义一个可以添加正文和附件的邮件消息对象
msg = MIMEMultipart()
#
msg['From'] = 'xxx<xxx@qq.com>'
msg['To'] = '张三<张三@qq.com>'
msg['subject'] = '未来'

# 构建正文
content = """
尊敬的用户:
你好!
我是未来的,发现你们那里今天有小雨,来提醒你一下,小心哦!!
"""
msg.attach(MIMEText(content,'plain', 'utf-8'))
# 添加正文
attachment_1 = MIMEText(open('1.jpg', 'rb').read(), 'base64', 'utf-8')
attachment_1['Content-Type'] = 'application/octet-stream'
attachment_1['Content-Disposition'] = 'attachment;filename="1.jpg"'
msg.attach(attachment_1)

attachment_2 = MIMEText(open('2.jpg', 'rb').read(), 'base64', 'utf-8')
attachment_2['Content-Type'] = 'application/octet-stream'
attachment_2['Content-Disposition'] = 'attachment;filename="admin.jpg"'
msg.attach(attachment_2)


# 发送邮件
To = ['xxx@qq.com']
server.sendmail(sendAddress, To, msg.as_string())
print('发送成功')

#二、如何使用python暴力破解密码

是不是感觉很牛掰

1."密码"破解应用
python破解WiFi密码
拿到一个密码的压缩包,但是不知大压缩包密码,可以尝试python破解
暴力破解:穷举法
2."密码"的组合
数字、字母、标点符号:
早ASCII码表中数字、字母、标点符号组合起来大概几十个符号。
个别网站还能允许使用汉字作为密码
采取大众化的形式尽可能的跑密码(排列组合穷举)
3."密码"的长度
WiFi要求密码最低也是长度为8位的密码
其他的密码要求均不一致,只能按照比较普通的形式进行密码设计
我们将密码的长度粗略的划分到4~11位
4.确认
密码使用数字和字母
长度位4~11

from itertools import product
# product作用:将提供容器中的所有元素排列组合形式按照指定的长度完全列出来
# 1、将数字、字母放入容器
list1 = [chr(i)for i in range(48, 58)]
list2 = [chr(i)for i in range(65, 91)]
list3 = [chr(i)for i in range(97, 123)]
newlist = list1 + list2 + list3
print(newlist)
# 2.指定长度范围
for length in range(4, 12):
# 3.开始生成“密码”
    #product(字符串容器,repeat= 长度)
    for i in product(newlist, repeat=length):
        result = ''.join(i)
        print(result)

#三、python操作PDF

都是有用的 ,吃吃吃嘻嘻。

import PyPDF2

# 1.读取pdf
reader1 = PyPDF2.PdfReader('./pdf/水印.pdf')
print(reader1)
# 2.创建一个空白的pdf写法
witer1 = PyPDF2.PdfWriter()


# 3.获取原来的pdf总页数
pages = reader1.getNumPages()
# 4.分别将每一页pdf遍历
for i in range(pages):
    # 通过指定第几页,将此页添加到空白的pdf中
    witer1.addPage(reader1.pages[i])
# 5.加密操作encrypt()
witer1.encrypt('0123')

# 6将pdf写入指定文件再保存关闭
#将指定文件使用二进制写模式打开,w:如果文件不存在,自动创建新的,如果文件存在,清空内容再写入
f = open('水印(加密版).pdf', 'wb')
# 将pdf写入到文件
witer1.write(f)
# 保存关闭
f.close()

虽然不多但是要好好用心学來

#四、python操作PDF解密

import PyPDF2

reader1 = PyPDF2.PdfReader('水印(加密版).pdf')
print(reader1.is_encrypted)
# 解密
if reader1.is_encrypted:
    # 使用decrypt()和加密时的密码进行解密
    reader1.decrypt('1234')

# 创建空白的pdf写方法
writer1 = PyPDF2.PdfWriter()
for i in range(reader1.getNumPages()):
    writer1.addPage(reader1.pages[i])

f = open('水印(加密版).pdf','wb')
writer1.write(f)
f.close()

#五、python暴力破解密码解密

这节课的知识点很解压哦 一定要看到最后

import PyPDF2
from itertools import product

reader1 = PyPDF2.PdfReader('水印(加密版).pdf')
# 判断读出来的信息是否为加密信息:is_encrypted
print(reader1.is_encrypted)
# --------------------------------------
# 解密:
if reader1.is_encrypted:
    # product作用:将提供的容器中的所有元素排列组合形式按照指定的长度完全列出来
    # 1.将数字、字母放入容器中
    list1 = [chr(i) for i in range(48, 58)]
    list2 = [chr(i) for i in range(65, 91)]
    list3 = [chr(i) for i in range(97, 123)]
    newList = list1 + list2 + list3
    print(newList)
    # 2.指定长度范围
    lenght = 4
    while 4 <= lenght <= 11:
        # 3.开始生成“密码”
        # product(字符串容器,repeat=长度)
        for i in product(newList, repeat=lenght):
            result = ''.join(i)
            print(f'正在尝试密码:{result}')
            # 使用decrypt()和加密时的密码进行解密
            # 解密失败:PasswordType.NOT_DECRYPTED
            # 解密成功:PasswordType.OWNER_PASSWORD
            reader1.decrypt(result)
            if str(reader1.decrypt(result)) == 'PasswordType.OWNER_PASSWORD':
                # 当密码解密成功后,将密码长度设置为一个不可能存在的数值,这将导致while循环不能再正常执行
                print(f'正确的密码是:{result}')
                lenght = -1
                break
        lenght += 1


# --------------------------------------
# 创建空白的PDF写方法
writer1 = PyPDF2.PdfWriter()
# 从读出来的PDF中读取每一页
for i in range(reader1.getNumPages()):
    # 将PDF的每一页添加到写方法中
    writer1.addPage(reader1.pages[i])

# 将PDF保存,关闭
f = open('水印(解密版).pdf', 'wb')
writer1.write(f)
f.close()

#六、python读取PDF文字

日常中用处非常大 ,赶快来学起来✌

import PyPDF2

# pypf2不能读取pdf中图片上的文字
reader1 = PyPDF2.PdfReader('./pdf/001-Python认知.pdf')
# 一页一页的读
for i in range(reader1.getNumPages()):
    # 根据下表指定页面
    page = reader1.pages[i]
    # 将pdf每一页的内容读取:extract_text()
    content =page.extract_text()
    print(content)


# pdf图片上的文字应该如何获取
# 1 截图、文字识别。--->OCR光学文字识别
# python中涉及到的光学文字识别
# EasyOCR模块、百度的飞桨、百度AI开发者平台等N多个OCR模块可以供python选择。

尤其是在输出的那块看起来很爽

#七、pythonPDF加水印

import PyPDF2

reader1 = PyPDF2.PdfReader('./pdf/001-Python认知.pdf')
water = PyPDF2.PdfReader('./pdf/水印.pdf')
writer1 = PyPDF2.PdfWriter()
for i in range(reader1.getNumPages()):
    page = reader1.pages[i]
    waterPage = water.pages[0]
    page.mergePage(page)

f = open('001-Python认知(水印版).pdf', 'wb')
writer1.write(f)
f.close()

#八、合并多个pdf

import PyPDF2

# 1.创建文件
writer = PyPDF2.PdfWriter
# 2.准备文件
file = ['001-Python环境安装.pfd', '002-Pycharm安装.pdf']
for i in file:
    filePath = f'./pdf/{i}'
    reader = PyPDF2.PdfReader(filePath)
    for i in range(reader.getNumPages()):
        page = reader.pages[i]
        writer.addPage(page)

# 保存到新文件
f = open('合并.pdf', 'wb')
writer.write(f)
f.close()
 类似资料: