如何通过Power Automate根据Excel数据动态修改邮件正文?
批量发送带动态内容邮件的实现方案
当然可以实现这个需求,以下是几种实用的解决方法:
方法1:Outlook + Excel 邮件合并(适合非技术用户)
- 整理数据源:把所有需要动态替换的内容(比如各类日期、收件人邮箱、姓名等)按列整理到Excel中,确保每一行对应一个收件人的完整变量数据。
- 制作邮件模板:打开Word,撰写邮件正文,把需要替换的位置用清晰的占位符标记,比如将日期写成「{可用开始日期}」「{可用结束日期}」。
- 启动邮件合并:在Word的「邮件」选项卡中,点击「开始邮件合并」→选择「电子邮件」,再导入你的Excel数据源文件。
- 绑定动态字段:选中模板里的占位符,点击「插入合并域」选择Excel对应的列,完成变量绑定。
- 预览并发送:点击「预览结果」检查内容准确性,确认后点击「完成并合并」→「发送电子邮件」,选择收件人邮箱列和邮件主题,即可批量发送。
方法2:Excel VBA脚本(灵活度更高)
- 打开Excel文件,按
Alt + F11打开VBA编辑器。 - 插入模块:右键点击工作簿→「插入」→「模块」,粘贴以下示例代码(根据你的实际列位置和正文修改):
Sub 批量发送动态邮件() Dim OutApp As Object Dim OutMail As Object Dim ws As Worksheet Dim lastRow As Long Dim i As Long Set ws = ThisWorkbook.Sheets("Sheet1") '替换为你的工作表名称 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row '获取A列最后一行数据 Set OutApp = CreateObject("Outlook.Application") For i = 2 To lastRow '假设第一行是表头,从第二行开始遍历数据 Set OutMail = OutApp.CreateItem(0) With OutMail .To = ws.Cells(i, "B").Value '假设B列是收件人邮箱 .Subject = "数据可用性通知" '拼接正文,替换动态变量 .Body = "各位好:" & vbCrLf & vbCrLf & _ "感谢您的来信。数据仅在" & ws.Cells(i, "A").Value & "至" & ws.Cells(i, "C").Value & "期间可用,请于" & ws.Cells(i, "D").Value & "日后致电。" .Send '直接发送,测试阶段可改为.Display查看效果 End With Set OutMail = Nothing Next i Set OutApp = Nothing MsgBox "邮件批量发送完成!" End Sub
- 配置并运行:确保Outlook已登录,检查代码中列的对应关系是否正确,按F5执行脚本即可。
方法3:Python脚本(适合有编程基础的用户)
- 安装依赖:执行
pip install pandas pywin32(Windows系统调用Outlook)或pip install pandas yagmail(用SMTP协议发送)。 - 示例代码(调用Outlook发送):
import pandas as pd import win32com.client as win32 # 读取Excel数据源 df = pd.read_excel("你的数据源文件.xlsx") # 初始化Outlook客户端 outlook = win32.Dispatch('outlook.application') # 遍历每一行数据发送邮件 for _, row in df.iterrows(): mail = outlook.CreateItem(0) mail.To = row['收件人邮箱'] mail.Subject = "数据可用性通知" # 用f-string拼接正文,替换动态变量 body = f"""各位好: 感谢您的来信。数据仅在{row['可用开始日期']}至{row['可用结束日期']}期间可用,请于{row['致电日期']}日后致电。""" mail.Body = body mail.Send() print("所有邮件发送完成!")
内容的提问来源于stack exchange,提问作者MSM
相关产品推荐
相关产品推荐

