Skip to content

macrossfev/report-sending

Repository files navigation

PDF加密邮件发送系统 (Excel配置版)

自动将指定文件夹内的PDF文件加密后,通过163邮箱发送给不同的收件人。

特色:使用Excel表格管理配置,直观易用!支持Windows和Linux!

功能特性

  • ✅ 批量加密PDF文件(AES-256加密)
  • ✅ 支持每个文件夹使用不同密码
  • ✅ 一次性发送多个加密PDF作为附件
  • Excel表格配置(无需编辑JSON)
  • ✅ 详细的进度显示和错误提示
  • ✅ 支持中文文件名和路径
  • 跨平台支持(Windows和Linux)
  • ✅ 使用163邮箱发送

文件说明

report-sending/
├── report/                  # PDF源文件夹(放置PDF文件)
│   └── 配置表.xlsx          # Excel配置文件(在这里修改!)
├── config.json              # 邮箱配置文件
├── pdf_encrypt_send.py      # 主程序
├── run.sh                   # Linux启动脚本
├── run.bat                  # Windows启动脚本
├── requirements.txt         # Python依赖
└── README.md               # 本说明文件

快速开始

第一步:安装Python依赖

Linux/Mac:

cd /path/to/report-sending
pip3 install -r requirements.txt

Windows:

cd C:\path\to\report-sending
py -m pip install -r requirements.txt

等待安装完成(会安装 pikepdf、colorama、openpyxl)。


第二步:获取163邮箱授权码

重要:163邮箱需要使用授权码,不是邮箱密码!

获取步骤:

  1. 登录163邮箱

  2. 进入设置

    • 点击顶部的「设置」
    • 选择「POP3/SMTP/IMAP」
  3. 开启SMTP服务

    • 找到「POP3/SMTP服务」或「IMAP/SMTP服务」
    • 点击「开启」(如果已开启则跳过)
    • 可能需要手机验证
  4. 设置授权密码(授权码)

    • 在页面找到「客户端授权密码」或「授权密码」
    • 点击「设置」或「重置授权密码」
    • 按提示发送短信验证
    • 复制显示的授权码(通常是字母+数字组合)
    • 妥善保存授权码

授权码示例:

ABCDEF123456  (示例格式,实际以163邮箱显示为准)

第三步:修改邮箱配置

使用文本编辑器打开 config.json,修改以下内容:

Linux/Mac示例:

{
  "smtp": {
    "server": "smtp.163.com",
    "port": 465,
    "sender_email": "你的163邮箱@163.com",
    "sender_password": "你的授权码",
    "sender_name": "报告发送系统"
  },
  "pdf_source_path": "/home/username/report-sending/report",
  "excel_config_file": "report/配置表.xlsx"
}

Windows示例:

{
  "smtp": {
    "server": "smtp.163.com",
    "port": 465,
    "sender_email": "你的163邮箱@163.com",
    "sender_password": "你的授权码",
    "sender_name": "报告发送系统"
  },
  "pdf_source_path": "D:\\report-sending\\report",
  "excel_config_file": "report\\配置表.xlsx"
}

注意:

  • Linux/Mac路径使用正斜杠 /
  • Windows路径使用双反斜杠 \\

第四步:填写Excel配置表

这是最重要的一步!

打开 report/配置表.xlsx,按照以下格式填写:

Excel表格格式:

文件夹名称 加密密码 收件邮箱 收件人名称
铜梁公司 TL2026Feb tongliang@example.com 铜梁公司
酉阳公司 YY2026Feb youyang@example.com 酉阳公司
江津公司 JJ2026Feb jiangjin@example.com 江津公司

填写说明:

  • 文件夹名称:必须与 report/ 下的子文件夹名称完全一致
  • 加密密码:用于加密PDF的密码(每个文件夹可以不同)
  • 收件邮箱:接收加密PDF的邮箱地址
  • 收件人名称:收件人的名称(用于邮件显示)

示例Excel配置:

文件夹名称        加密密码         收件邮箱                    收件人名称
铜梁公司         TL2026Feb        tongliang@qq.com           铜梁公司
酉阳公司         YY2026Feb        youyang@qq.com             酉阳公司
江津公司         JJ2026Feb        jiangjin@qq.com            江津公司
垫江公司         DJ2026Feb        dianjiang@qq.com           垫江公司
长寿公司         CS2026Feb        changshou@qq.com           长寿公司

重要提示:

  • 第一行是表头,不要修改
  • 从第二行开始填写数据
  • 所有列都必须填写(不能为空)
  • 保存后关闭Excel文件

第五步:准备PDF文件

将PDF文件按以下结构存放在 report/ 文件夹下:

report-sending/
└── report/
    ├── 配置表.xlsx
    ├── 铜梁公司/
    │   ├── 报告1.pdf
    │   ├── 报告2.pdf
    │   └── 数据.pdf
    ├── 酉阳公司/
    │   ├── 月报.pdf
    │   └── 统计.pdf
    └── 江津公司/
        └── 分析.pdf

注意:

  • 文件夹名称必须与Excel配置表中的"文件夹名称"列完全一致
  • 支持中文文件名
  • 每个文件夹内可以有多个PDF文件

第六步:运行程序

Linux/Mac:

cd /path/to/report-sending
./run.sh

或者:

python3 pdf_encrypt_send.py

Windows:

方法一:双击 run.bat 文件

方法二:命令行运行

py pdf_encrypt_send.py

运行效果

程序运行时会显示:

============================================================
               PDF加密邮件发送系统
                  Excel配置版
============================================================

✓ 配置文件加载成功: D:\project\config.json
✓ Excel配置加载成功: D:\project\配置表.xlsx
ℹ 共加载 3 个文件夹配置
✓ PDF源文件夹: D:\report

>>> 进度: 1/3 <<<

============================================================
ℹ 开始处理: 铜梁公司
============================================================
ℹ 找到 3 个PDF文件
ℹ 使用密码加密: TL2026Feb
ℹ [1/3] 正在加密: 报告1.pdf
✓ 加密成功: 报告1.pdf
ℹ [2/3] 正在加密: 报告2.pdf
✓ 加密成功: 报告2.pdf
ℹ [3/3] 正在加密: 数据.pdf
✓ 加密成功: 数据.pdf
ℹ 准备发送邮件到: tongliang@example.com
ℹ 正在连接163邮箱服务器...
✓ 邮件发送成功!(3 个附件)
ℹ 临时文件已清理

>>> 进度: 2/3 <<<
...

============================================================
                    处理完成
============================================================

ℹ 总共: 3 个文件夹
✓ 成功: 3 个

每月更新密码

每月只需修改 配置表.xlsx 即可:

  1. 打开 配置表.xlsx
  2. 修改"加密密码"列的密码
  3. 保存文件
  4. 重新运行程序

密码建议格式:

  • 公司简称 + 年份 + 月份(如:TL2026Feb, TL2026Mar)
  • 包含字母+数字,8位以上
  • 每个公司可以使用不同密码

示例:

2月份:TL2026Feb, YY2026Feb, JJ2026Feb
3月份:TL2026Mar, YY2026Mar, JJ2026Mar
4月份:TL2026Apr, YY2026Apr, JJ2026Apr

常见问题

1. 提示"163邮箱认证失败"

原因: 授权码错误或未开启SMTP服务

解决:

  • 确认使用的是授权码,不是163邮箱密码
  • 检查授权码是否复制完整
  • 重新生成授权码
  • 确认已开启SMTP服务

2. 提示"文件夹不存在"

原因: Excel配置表中的文件夹名称与实际不一致

解决:

  • 检查 report/ 下是否有对应的文件夹
  • 确保文件夹名称完全一致(包括空格、标点符号)
  • 注意中文输入法的全角/半角问题

3. 提示"Excel配置文件不存在"

原因: 配置表.xlsx 文件不在 report/ 文件夹

解决:

  • 确保 配置表.xlsxreport/ 文件夹下
  • 检查文件名是否正确(包括扩展名)

4. 提示"没有PDF文件"

原因: 文件夹内没有PDF文件

解决:

  • 确认文件夹内有 .pdf 文件
  • 检查文件扩展名是否正确
  • 确保PDF文件没有被隐藏

5. Excel配置加载失败

原因: Excel文件格式错误或被占用

解决:

  • 关闭Excel文件后再运行程序
  • 确保Excel文件没有损坏
  • 检查是否有空行或格式错误

6. 邮件发送慢

原因: 附件较大或网络慢

说明:

  • 163邮箱单封邮件最大支持50MB附件
  • 如果附件过大,建议分批发送或压缩

Excel配置的优势

相比JSON配置,Excel配置有以下优势:

  1. 直观可视化:表格形式,一目了然
  2. 易于编辑:双击即可修改,无需担心格式错误
  3. 批量操作:可以批量复制、粘贴、填充
  4. 不易出错:不会因为少个逗号、括号导致程序崩溃
  5. 便于管理:可以添加、删除行,灵活管理配置

安全建议

  1. 不要将配置文件分享给他人(包含邮箱授权码)
  2. 定期更换163邮箱授权码
  3. 每月更新PDF加密密码
  4. 通过其他方式告知收件人密码(不要在邮件正文中明文写密码)
  5. Excel配置表妥善保管(包含敏感信息)

技术支持

如遇到问题,请检查:

Linux/Mac:

  1. Python版本是否 >= 3.8(运行 python3 --version 查看)
  2. 依赖包是否正确安装(运行 pip3 list
  3. run.sh是否有执行权限(运行 chmod +x run.sh

Windows:

  1. Python版本是否 >= 3.8(运行 py --version 查看)
  2. 依赖包是否正确安装(运行 py -m pip list

通用检查:

  1. Excel配置文件格式是否正确
  2. config.json 格式是否正确(JSON格式,注意逗号)
  3. 网络连接是否正常
  4. 163邮箱SMTP服务是否已开启
  5. 配置表.xlsx 是否在 report/ 文件夹下

更新日志

v2.1 (2026-02-04)

  • 新增Linux支持
  • 新增run.sh启动脚本
  • 优化文件结构(report文件夹)
  • 更新README支持跨平台

v2.0 (2026-02-04)

  • 新增Excel配置支持
  • 切换到163邮箱
  • 优化错误提示
  • 改进用户体验

v1.0 (2026-02-04)

  • 初始版本
  • 支持批量PDF加密
  • 支持QQ邮箱发送

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors