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

如何用Python结合win32com通过for循环发送个性化邮件?

实现Python批量个性化邮件发送

你的现有代码已经能完成批量发送邮件的基础功能,要实现邮件内容的个性化(比如替换称呼为收件人姓名),只需要调整循环逻辑,同时获取收件人的姓名和邮箱信息,再将姓名插入到邮件内容中即可。

核心修改点

  • 不要只遍历邮箱列,改为遍历DataFrame的每一行,这样能同时拿到姓名和邮箱
  • 将Outlook实例化操作移到循环外,避免重复创建客户端,提升效率
  • 使用字符串格式化将收件人姓名插入到邮件正文的对应位置

修改后的完整代码

import win32com.client as win32
import pandas as pd

df = pd.read_excel("test_emails.xlsx")

# 仅初始化一次Outlook客户端
outlook = win32.Dispatch('outlook.application')

# 遍历DataFrame的每一行,获取姓名和邮箱
for _, row in df.iterrows():
    # 提取当前行的姓名和邮箱
    first_name = row['first_name']
    last_name = row['Last_name']
    recipient_email = row['email']
    
    # 创建邮件
    mail = outlook.CreateItem(0)
    mail.Subject = 'Test email'
    mail.To = recipient_email
    # 用f-string实现个性化称呼,可根据需求调整为仅名字或全名
    mail.HTMLBody = f"""
    Dear {first_name} {last_name},<br><br>
    This is a test email.
    """
    # 如果只需要称呼名字,可替换为:
    # mail.HTMLBody = f"""
    # Dear {first_name},<br><br>
    # This is a test email.
    # """
    mail.Send()

关键说明

  • df.iterrows()会返回每一行的索引和行数据,这里用_忽略索引,直接用row获取行内字段
  • f-string是Python中简洁的字符串格式化方式,能直接将变量嵌入到字符串中
  • 若你的Python版本低于3.6,可改用.format()方法:
    mail.HTMLBody = """
    Dear {} {},<br><br>
    This is a test email.
    """.format(first_name, last_name)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:15:44