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

Python批量邮件应用字符串格式化问题求助:无法插入用户名

你的批量邮件代码问题分析与修复方案

嘿,我一眼就发现问题所在啦!你当前的代码逻辑顺序搞反了,导致函数里的姓名根本没用到邮件正文里。

问题根源

你在函数外面就用空的first_name(值是空格字符串)提前格式化了body,之后把这个已经固定好的字符串传给函数。而函数内部定义的first_name = 'mike'是局部变量,和已经生成的body完全没关系,自然没法替换正文里的占位符,所以输出才会显示Dear ,。

修复方案

要实现“给不同姓名的人发送定制邮件”,你需要把姓名参数传入函数,并在函数内部完成邮件正文的格式化。这里给你两种实用的写法:

1. 基础单姓名调用

把姓名作为参数传给函数,在函数内生成定制化的正文:

def send_test_email(first_name):
    # 将邮件模板放在函数内部,每次调用用传入的姓名填充
    body = """Dear {}, Here is new email. Thanks. Mike""".format(first_name)
    print(body)  # 实际项目中替换成你的发送邮件逻辑

# 调用时传入具体姓名
send_test_email('Mike')

2. 批量处理姓名列表

如果要给列表里的所有人发邮件,只需要遍历列表,逐个调用函数即可:

# 待发送的姓名列表
name_list = ['Alice', 'Bob', 'Charlie', 'Mike']

def send_test_email(first_name):
    body = """Dear {}, Here is new email. Thanks. Mike""".format(first_name)
    print(body)  # 替换成实际发送邮件的代码

# 批量遍历发送
for name in name_list:
    send_test_email(name)

额外提示

如果你的邮件模板很长,也可以把模板定义成全局变量,然后在函数里用传入的姓名格式化它,比如:

# 全局邮件模板
EMAIL_TEMPLATE = """Dear {}, Here is new email. Thanks. Mike"""

def send_test_email(first_name):
    body = EMAIL_TEMPLATE.format(first_name)
    print(body)

send_test_email('Mike')

这样既保持模板的复用性,又能确保每次都用正确的姓名生成正文~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:47:06