You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动下载设备每日发送的CSV邮件附件?

自动下载CSV邮件附件的实现方案

一、Python脚本核心实现(无需自建邮箱服务)

不用搭建额外邮箱服务,直接通过Python访问现有收件邮箱拉取附件即可,核心步骤如下:

  • 依赖工具:用Python标准库imaplib(处理IMAP协议,主流邮箱均支持)+email库解析邮件;嫌标准库繁琐的话,可改用第三方库imapclient简化操作。
  • 核心逻辑:
    1. 开启收件邮箱的IMAP服务,获取授权码(替代登录密码,比如QQ/163邮箱在账户设置中开启IMAP后生成)
    2. 连接对应邮箱的IMAP服务器(如QQ邮箱imap.qq.com,163邮箱imap.163.com)
    3. 登录后筛选目标邮件:按发件人(设备固定邮箱)、日期(当日)、是否含CSV附件等条件过滤,避免误下载
    4. 解析匹配邮件,提取CSV附件并保存到指定目录
  • 示例代码片段:
import imaplib
import email
from email.header import decode_header
import os

# 邮箱配置
IMAP_SERVER = "imap.xxx.com"
USERNAME = "your_email@xxx.com"
PASSWORD = "your_auth_code"  # 邮箱授权码,非登录密码
SAVE_FOLDER = "./daily_csv_data"

# 创建保存目录
os.makedirs(SAVE_FOLDER, exist_ok=True)

# 连接并登录IMAP服务器
mail = imaplib.IMAP4_SSL(IMAP_SERVER)
mail.login(USERNAME, PASSWORD)
mail.select("inbox")

# 搜索指定发件人的当日邮件(可根据需求调整搜索条件)
status, messages = mail.search(None, '(FROM "device_email@xxx.com" ON "01-Oct-2024")')

# 遍历并提取附件
for num in messages[0].split():
    status, msg_data = mail.fetch(num, "(RFC822)")
    msg = email.message_from_bytes(msg_data[0][1])
    
    # 遍历邮件内容,筛选CSV附件
    for part in msg.walk():
        if part.get_content_maintype() == 'multipart' or part.get('Content-Disposition') is None:
            continue
        filename = part.get_filename()
        if filename and filename.endswith('.csv'):
            # 解码文件名并保存
            if isinstance(filename, bytes):
                filename = filename.decode('utf-8')
            filepath = os.path.join(SAVE_FOLDER, filename)
            with open(filepath, 'wb') as f:
                f.write(part.get_payload(decode=True))
            print(f"已保存附件: {filepath}")

# 关闭连接
mail.close()
mail.logout()

二、树莓派部署方案

将脚本部署到树莓派,实现每日自动执行:

  1. 确保树莓派联网,自带的Python3即可满足需求
  2. 将脚本复制到树莓派,配置好邮箱信息和附件保存路径
  3. 用cron定时任务实现自动运行:
    • 终端输入crontab -e编辑任务
    • 添加一行(示例为每日23点执行,可根据设备发件时间调整):
      0 23 * * * /usr/bin/python3 /home/pi/scripts/download_csv.py >> /home/pi/scripts/csv_log.log 2>&1
      
    • 保存退出后,cron会自动生效,日志可通过指定文件查看

三、关键注意事项

  • 必须开启收件邮箱的IMAP服务,使用授权码而非登录密码登录
  • 邮件搜索条件要精准(指定发件人/主题/日期),避免下载无关附件
  • 树莓派上要确保脚本路径、Python路径正确,定时任务用户有目录读写权限

四、学习资料推荐

  • Python官方文档:imaplib与email模块的官方说明,覆盖邮件解析、IMAP操作的全部API
  • Linux Cron教程:树莓派基于Debian,通用Linux Cron教程均可参考,讲解定时任务的配置与调试
  • imapclient库文档:第三方封装的IMAP操作库,提供更简洁的API,适合快速开发

内容的提问来源于stack exchange,提问作者NotARobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:01:40