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

如何用Python邮件脚本发送每日生成的HTML文件内容?

解决读取每日HTML文件并作为邮件正文发送的问题

嘿,看起来你已经搭好了HTML邮件的发送框架,就差读取每日生成的HTML文件这关键一步啦!别担心,咱们一步步来搞定:

1. 动态匹配当日的HTML文件名

你的文件名格式是export_MM-DD-YY.html,用Python的datetime模块就能自动生成当天的文件名,不用手动改日期:

from datetime import datetime

# 获取当前日期,格式化为 MM-DD-YY 格式
today = datetime.today().strftime("%m-%d-%y")
html_filename = f"export_{today}.html"

2. 读取HTML文件内容

用Python内置的文件操作读取内容,记得指定编码(比如utf-8)避免乱码,同时加上异常处理防止文件找不到的情况:

try:
    with open(html_filename, 'r', encoding='utf-8') as file:
        html_content = file.read()
except FileNotFoundError:
    print(f"错误:没找到今日的HTML文件 {html_filename}")
    # 这里可以加告警逻辑,比如发个错误提示邮件或者直接退出程序
    exit(1)
except Exception as e:
    print(f"读取文件时出错:{str(e)}")
    exit(1)

3. 整合到你的邮件发送脚本里

把读取到的html_content作为邮件的HTML正文,设置subtype='html'就能让邮件客户端直接渲染内容了。下面是补全后的完整示例代码:

#!/usr/bin/env python3
import smtplib
from datetime import datetime
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import config  # 假设你的config.py存了邮箱账号、密码、SMTP服务器等配置

# 生成当日HTML文件名
today = datetime.today().strftime("%m-%d-%y")
html_filename = f"export_{today}.html"

# 读取HTML文件内容
try:
    with open(html_filename, 'r', encoding='utf-8') as file:
        html_content = file.read()
except FileNotFoundError:
    print(f"错误:未找到今日报告文件 {html_filename}")
    exit(1)
except Exception as e:
    print(f"读取文件失败:{str(e)}")
    exit(1)

# 构建邮件
msg = MIMEMultipart()
msg['From'] = config.sender_email
msg['To'] = config.recipient_email
msg['Subject'] = f"今日数据报告 ({today})"

# 添加HTML正文(这一步就是让邮件直接显示内容的关键)
msg.attach(MIMEText(html_content, 'html'))

# 发送邮件
try:
    with smtplib.SMTP(config.smtp_server, config.smtp_port) as server:
        server.starttls()  # 如果用SSL协议,换成 smtplib.SMTP_SSL 即可
        server.login(config.sender_email, config.sender_password)
        server.send_message(msg)
    print(f"邮件发送成功!已投递 {html_filename} 的内容")
except Exception as e:
    print(f"发送邮件失败:{str(e)}")

几个实用小提示

  • 如果HTML文件不在脚本同目录下,要写完整路径,比如html_filename = f"/home/yourname/reports/export_{today}.html"
  • 确保config.py里的SMTP配置正确:比如Gmail用smtp.gmail.com+端口587,QQ邮箱用smtp.qq.com+端口587,记得用授权码代替密码
  • 异常处理可以根据需求扩展,比如文件不存在时给管理员发个提醒邮件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:07:29