题目要求:
编写python代码,扫描指定目录下的文件,将这些扫描的文件内容以邮件发送送到指定邮箱
代码实现:
import os
import smtplib,email
from email.header import Header
from email.mime.text import MIMEText
file_tree = ""
def scan__file(path,indent=""):
"""文件扫描脚本"""
#获取当前指定目录中的所有文件(文件夹+文件)
files = sorted(os.listdir(path))
for file in files:
#拼接路径
file = os.path.join(path, file)
#如果是文件,直接输出文件名
global file_tree
if (os.path.isfile(file)):
print(f"{indent}文件:{file}")
file_tree += f"{indent}文件夹::{file}\n"
#如果是文件夹,先输出文件夹名称
if (os.path.isdir(file)):
print(f"{indent}文件夹:{file}")
file_tree += f"{indent}文件夹::{file}\n"
#递归调用
indent += "|——"
file_tree += scan__file(file,indent)
return file_tree
def send_email(sender_email, sender_password, recipient, subject, body):
# SMTP服务器信息(以QQ邮箱为例)
smtp_server = 'smtp.qq.com'
smtp_port = 587
# 创建SMTP会话
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(sender_email, sender_password)
# 构建邮件内容
message = MIMEText(body, 'plain', 'utf-8')
message['Subject'] = subject
message['From'] = sender_email
message['To'] = recipient
# 发送邮件
server.sendmail(sender_email, recipient, message.as_string())
# 关闭SMTP会话
server.quit()
if __name__ == "__main__":
path = "**********" #目录
file_tree = scan__file(path)
# 发送邮件
sender_email = '*************'
sender_password = '*************' # 此处密码填写授权码
recipient = '***********'
subject = '文件树形结构'
send_email(sender_email, sender_password, recipient, subject, file_tree)
运行结果: