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
相关产品推荐
相关产品推荐

