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

Python结合Excel实现Outlook动态邮件主题及日期配置问询

实现方案

你只需要补全两个核心逻辑:一是读取Excel指定单元格的取值,二是把读取到的动态值替换掉邮件主题、正文中的占位内容,具体操作如下:

  • 先安装读取Excel需要的依赖:执行命令pip install openpyxl,该库可以直接读写xlsx格式文件,不需要本地启动Excel进程,你已经在使用的pywin32无需重复安装。
  • 注意补全Excel文件的完整后缀,比如xlsx格式要把路径写成Document\Email_Excel.xlsx,建议使用绝对路径避免文件读取失败,工作表名、单元格坐标直接按你给出的配置填写即可。
  • 读取到A1的动态名称、B2的动态日期后,通过字符串格式化直接替换主题和正文里的占位文本即可。

完整可运行代码

import win32com.client as client
from openpyxl import load_workbook

# -------------------------- 配置项 按实际情况修改 --------------------------
EXCEL_PATH = r"Document\Email_Excel.xlsx"  # 路径前加r避免反斜杠转义,建议替换为绝对路径
SHEET_NAME = "Overview"
NAME_CELL = "A1"  # 动态名称所在单元格
DATE_CELL = "B2"  # 动态日期所在单元格
RECEIVER_LIST = "xxx@xxx.com;yyy@xxx.com"  # 多个收件人用英文分号分隔
# --------------------------------------------------------------------------

# 读取Excel指定单元格值
wb = load_workbook(EXCEL_PATH, data_only=True)  # data_only=True读取单元格计算后的值,而非公式文本
ws = wb[SHEET_NAME]
dynamic_name = ws[NAME_CELL].value
dynamic_date = ws[DATE_CELL].value
wb.close()  # 读取完成后关闭文件避免占用

# 初始化Outlook邮件
outlook = client.Dispatch("Outlook.Application")
message = outlook.CreateItem(0)
message.Display()
message.To = RECEIVER_LIST

# 注入动态内容生成邮件主题
message.Subject = f"{dynamic_name}, {dynamic_date} Data"

# 注入动态内容生成HTML正文
html_body = f"""
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<p>Hello,</p>
<p>Could you please send over the {dynamic_date} information?</p>
<p>If you already sent over the information required, please disregard this message.</p>
<p>Thank you.</p>
</body>
</html>
"""
message.HTMLBody = html_body

# 如需跳过预览直接发送,取消下面这行的注释即可
# message.Send()

注意事项

  • 如果你使用的是.xls格式的旧版Excel文件,不要用openpyxl,安装xlrd==1.2.0版本读取即可,单元格取值逻辑基本一致。
  • 如果读取到的日期格式不符合预期,可以在拿到dynamic_date变量后做格式化处理,比如读出来是datetime类型对象时,用dynamic_date.strftime("%Y-%m-%d")就能转成「年-月-日」格式的字符串。
  • 原代码里from email import message是无效导入,和Outlook生成的邮件对象重名,直接删掉即可避免潜在冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:39:03