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

如何每隔5秒读取多文本文件并将各文件最后一行一次性邮件发送

解决思路:先收集所有内容,再统一发送

我明白你的问题啦——现在脚本是处理一个文件就发一封邮件,导致收到4封单独的邮件,而你想要把四个系统的最后一行数据整合到同一封里一次性发送。核心改法就是先把所有文件的目标内容收集齐全,再执行一次邮件发送操作,而不是每处理一个文件就发一次。

具体实现步骤(以Python为例)

1. 先收集所有文件的最后一行数据

先遍历你要处理的4个文件,把每个文件的最后一行整理成你需要的格式,统一存到一个列表里:

import os

# 替换成你的4个文件实际路径
target_files = ["sys1.txt", "sys2.txt", "sys3.txt", "sys4.txt"]
mail_content_lines = []

for file_name in target_files:
    # 先检查文件是否存在,避免报错
    if not os.path.isfile(file_name):
        mail_content_lines.append(f"⚠️ 警告:文件 {file_name} 未找到!")
        continue
    
    # 获取文件最后一行内容
    with open(file_name, "r") as f:
        # 读取所有行后取最后一行,strip()去掉多余的换行/空格
        last_line = f.readlines()[-1].strip()
        # 按照你需要的格式拼接内容
        system_name = file_name.split(".")[0]  # 从文件名提取sys1/sys2等标识
        mail_content_lines.append(f"last saved data from datafiles {system_name} last scan {last_line}")

# 把所有行合并成一个完整的邮件正文,用换行分隔
final_mail_body = "\n".join(mail_content_lines)

2. 一次性发送整合后的内容

接下来把上面生成的final_mail_body作为邮件正文,只执行一次邮件发送操作:

import smtplib
from email.mime.text import MIMEText

# 替换成你的实际邮件配置信息
sender_email = "你的发件邮箱@example.com"
receiver_email = "收件邮箱@example.com"
smtp_server = "smtp.example.com"  # 比如QQ邮箱是smtp.qq.com,Gmail是smtp.gmail.com
smtp_port = 587  # 通常是587(TLS加密)或465(SSL加密)
email_auth_code = "你的邮箱授权码/登录密码"  # 部分邮箱需要用授权码而非登录密码

# 构建邮件对象
msg = MIMEText(final_mail_body, "plain", "utf-8")
msg["From"] = sender_email
msg["To"] = receiver_email
msg["Subject"] = "所有系统最新扫描数据汇总"

# 发送邮件
try:
    with smtplib.SMTP(smtp_server, smtp_port) as server:
        server.starttls()  # 启用TLS加密
        server.login(sender_email, email_auth_code)
        server.send_message(msg)
    print("邮件已成功发送,包含所有系统的最新数据!")
except Exception as e:
    print(f"邮件发送失败:{str(e)}")

关键注意点

  • 把邮件发送逻辑从文件遍历的循环内部移到循环外部,这是避免多发邮件的核心
  • 先通过循环收集全所有需要的内容,再统一生成邮件正文
  • 记得根据自己的邮箱服务商调整SMTP服务器地址、端口和验证信息(比如QQ、网易邮箱需要使用授权码而非登录密码)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:36:18