Python扫描发送邮件

news2024/11/25 12:24:35

一、具体要求

编写 python 代码,扫描指定的目录下的所有文件,将这些扫描的文本内容邮 件发送到指定邮箱( 自己的 qq 邮箱 )
示例如下:
使用QQ邮箱SMTP服务器需要获取QQ邮箱授权码,获取方式可参考以下链接:
电子邮件

二、相关代码

import os
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
def list_files_recursively(path, depth=0):
    """扫描文件并打印树形结构"""
    indent = "    " * depth
    files = sorted(os.listdir(path))
    file_tree = ""
    for f in files:
        fullpath = os.path.join(path, f)
        if os.path.isdir(fullpath):
            file_tree += f"{indent}├── {f}/\n"
            file_tree += list_files_recursively(fullpath, depth + 1)
            if depth == 0 and f < files[-1]:
                file_tree += f"{indent}│   \n"
        elif os.path.isfile(fullpath):
            file_tree += f"{indent}├── {f}\n"
            if depth == 0 and f < files[-1]:
                file_tree += f"{indent}│   \n"
    return file_tree
def send_email(subject, body, to_email, from_email, password, smtp_server, smtp_port):
    # 创建邮件对象
    msg = MIMEMultipart()
    msg['From'] = from_email
    msg['To'] = to_email
    msg['Subject'] = subject
    msg.attach(MIMEText(body, 'plain', 'utf-8'))
    #SMTP 服务器
    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()
    server.login(from_email, password)
    server.sendmail(from_email, to_email, msg.as_string())
    server.quit()


if __name__ == '__main__':
    # 已经的一个文件夹路径
    folder_path = "D:\\Typora"
    tree_string = list_files_recursively(folder_path)
    send_email(
        "文件夹树形结构",
        tree_string,
        "**********@qq.com",  # 收件人邮箱
        "**********@qq.com",  # 发件人邮箱(确保这个邮箱与你的SMTP账户一致)
        "***********",  # 此处填写你的QQ邮箱SMTP授权码
        "smtp.qq.com",
        587
    )

三、执行结果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1660294.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【千帆平台】使用AppBuilder零代码创建应用,然后通过OpenAPI方式调用应用

欢迎来到《小5讲堂》 这是《千帆平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言创建API密钥调用文档调用说明API服务域名通信协议字符编码公…

企业短信群发被拦截的原因

企业短信群发作为一种高效的营销手段&#xff0c;被越来越多的企业所采用。也经常会面临被拦截的问题&#xff0c;这给企业带来了沉重的损失。本文将探讨企业群发被拦截的原因&#xff0c;并寻找解决办法。 频率过高 频率过高是导致企业群发被拦截的常见原因之一。当企业的频率…

淘宝扭蛋机小程序开发:探索未知,扭出惊喜

一、引领潮流&#xff0c;创新体验 在淘宝这片购物海洋中&#xff0c;我们总是寻求为您带来不一样的惊喜和乐趣。今天&#xff0c;我们正式推出淘宝扭蛋机小程序&#xff0c;将传统扭蛋的趣味与电商购物的便捷完美结合&#xff0c;为您带来前所未有的购物新体验。 二、扭蛋机…

摩菲Murphy显示器显示表 总线编程器维修PV780B

Murphy仪器维修包括&#xff1a;摩菲数字显示器&#xff1b;摩菲监视仪表&#xff1b;摩菲CAN总线控制器等维修 维修故障包括&#xff1a;黑屏、指示灯无显示&#xff0c;触摸屏上电无反应&#xff0c; 上电蓝屏、白屏&#xff0c;通电几分钟后屏幕变为蓝屏&#xff0c;主板故…

vue2后台管理项目

一:项目准备 1)拉取模板代码 远程仓库复制到本地仓库. 2)安装后的项目 路径 code 文件夹 会打开vscode的文件夹. 3)安装vetur和eslint插件可以保存时自动修改不规范的地方. 4)App内有一级路由,路由组件导入如果是layout架子,会导入的是文件夹下的index.js没有则导入index.v…

副业兼职没那么难,视频号带货,1天稳定500,适合新手操作

向大家推荐一个项目&#xff1a;视频号书单号带货玩法。我已经实践了一段时间&#xff0c;并成功售出了1200多单&#xff0c;赚取了2万多元。这个项目表现相当出色&#xff0c;强烈推荐给大家&#xff01; 周周近财&#xff1a;让网络小白少花冤枉钱&#xff0c;赚取第一桶金 …

使用Three.js开发一个3D案例Demo

使用Three.js开发一个3D案例 最近在找工作&#xff0c;发现好多招聘要求都需要会Three.js&#xff0c;以前接触比较多的是2D开发&#xff0c;也就是平面开发&#xff0c;用到的做多的技术就是d3.js&#xff0c;现在3D开发已经成为了大势所趋&#xff0c;所以就学习下Three.js。…

我国结肠镜市场规模逐渐扩大 国产化率有所增长

我国结肠镜市场规模逐渐扩大 国产化率有所增长 结肠镜是专用于检查结肠内部的医疗器械&#xff0c;属于内窥镜的细分品类之一。结肠镜具有特殊的设计&#xff0c;可以检查结肠壁的状态、寻找肠道中的异常病变和息肉等&#xff0c;在筛查结肠癌、检测炎症性肠病等方面发挥着十分…

【深度学习Labelme】使用Segment Anything Model (SAM)快速打标,labelme多边形转yolo txt框看看对不对

文章目录 windows安装环境打开labelme自动保存勾选上&#xff0c;保存图片数据不要勾选选SAM精准模型&#xff0c;然后打开图片路径&#xff0c;然后点击创建AI多边形&#xff1a;鼠标点击确认物体控制点&#xff0c;确认完成后&#xff0c;双击鼠标完成选取&#xff0c;并给上…

各种数据获取stream流的方式

1.单列集合&#xff08;直接调用&#xff09; ArrayList<Integer> list new ArrayList<>();list.stream(); 2.双列集合 HashMap<String, Integer> map new HashMap<>();map.put("aaa",111);map.put("bbb",222);map.put("c…

101_Linux文件挂载系统相关

一、文件系统简介 传统的磁盘与文件系统应用中,一个分区就只能够被格式化成为一个文件系统,所以我们可以说一个文件系统就是一个硬盘分区。 随着新技术的出现如LMM与软件磁盘阵列software raid),这些技术可以将一个分区格式化为多个文件系统(例如LWM),也能够将多个分区合成一…

[图解]分层架构是DDD提出的吗

1 00:00:00,040 --> 00:00:02,640 今天我们来说一下分层架构 2 00:00:04,310 --> 00:00:06,730 我经常看到一些文章 3 00:00:06,740 --> 00:00:10,390 或者是在开发团队里面看到 4 00:00:10,400 --> 00:00:12,940 有开发人员说&#xff0c;分层架构 5 00:00:12…

centos7下fastdfs分布式部署

需要先在159及120服务器上安装fastdfs服务 可参考&#xff1a;centos7部署FastDFS服务_centos fastdfs 增加到服务中-CSDN博客 1、整体架构&#xff0c;使用3个服务器节点&#xff0c;其中两台为跟踪器节点及存储节点&#xff0c;一台服务器搭建nginx做统一入口进行负载均衡 …

机器学习算法应用——朴素贝叶斯分类器

朴素贝叶斯分类器 朴素贝叶斯分类器&#xff08;Naive Bayes Classifier&#xff09;是一种基于贝叶斯定理和特征条件独立假设的分类方法。它适用于分类任务&#xff0c;特别是文本分类、垃圾邮件识别等领域。 原理 朴素贝叶斯分类器基于以下两个主要假设&#xff1a; 特征条…

【Python】selenium爬虫常见用法和配置,以及常见错误和解决方法

欢迎来到《小5讲堂》 这是《Python》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言无执行文件代码报错信息错误路径手动下载自动下载 选项配置Ch…

CubeMX重写配置生成代码后注释出现乱码的解决方式

1.搜索环境变量 2.就是这里&#xff0c;每个版本Windows可能不太一样 3.新建 4.系统变量下面新建 变量&#xff1a;JAVA_TOOL_OPTIONS 值&#xff1a;-Dfile.encodingUTF-8 如果还不行&#xff0c;那我也没辙&#xff0c;哈哈。

python自动化生成ppt

使用Python和python-pptx创建PPT 在这篇博客中&#xff0c;我们将探讨如何使用Python库python-pptx来创建一个简单的PowerPoint演示文稿&#xff08;PPT&#xff09;。这个库允许我们以编程方式创建幻灯片、添加文本、图片、表格和自定义形状。 安装python-pptx 首先&#x…

springboot -多数据源管理方案

多数据源的配置有多种方式 方式一 、依赖dataSource的配置 1.建立多数据源配置 spring:# 数据源配置datasource:pdm:driver-class-name: oracle.jdbc.driver.OracleDriverjdbc-url: jdbc:oracle:thin:10.216.xxx.xxx:3000:orclusername: cfpdmpassword: capecapp:driver-cla…

kali卸载openjdk并安装 jdk1.8

一、卸载自带的openjdk 1.1、kali自带的 java 是 openjdk&#xff0c;如果需要开发安卓或者其他应用程序&#xff0c;则需要将 openjdk 换成 jdk1.8。 1.2、查看kali自带的openjdk版本 ┌──(root㉿kali)-[~] └─# java -version openjdk version "17.0.10" 2024…

Wireshark下载安装和使用教程

Wireshark下载安装和使用教程 Wireshark&#xff08;前身 Ethereal&#xff09;是一个网络包分析工具。该工具主要是用来捕获网络数据包&#xff0c;并自动解析数据包&#xff0c;为用户显示数据包的详细信息&#xff0c;供用户对数据包进行分析。 它可以运行在 Windows 和 L…