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

Python发送列表数据至邮件遇问题:仅显示最后一条数据

Python邮件发送列表数据仅显示最后一条的解决办法

问题场景

尝试通过Python将两个列表中的对应数据逐行发送到邮件,但最终只收到最后一条数据。

原代码

import smtplib
from email.message import EmailMessage

tokens = ['stfen1','stfen2','stfen3','stfen4','stfen5']
ids = ['idfstfen1','idfstfen1','idfstfen1','idfstfen1','idfstfen1',]
num = 1
EMAIL_ADDRESS = ('example@gmail.com')
EMAIL_PASSWORD = ('password')

msg = EmailMessage()
msg['Subject'] = f'EMP Data'
msg['From'] = f'Name <{EMAIL_ADDRESS}>'
msg['To'] = f'Name <{EMAIL_ADDRESS}>'

for token,id in zip(tokens,ids):
                msg.set_content(f'Data\n{num}: Account ID->{id}--Account Token->{token}\n')
                num += 1

with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
    smtp.send_message(msg)

期望邮件输出

Data
1: Account ID-> idfstfen1--Account Token-> stfen1

Data
2: Account ID-> idfstfen1--Account Token-> stfen2

Data
3: Account ID-> idfstfen1--Account Token-> stfen3

Data
4: Account ID-> idfstfen1--Account Token-> stfen4

Data
5: Account ID-> idfstfen1--Account Token-> stfen5

实际邮件输出

Data
5: Account ID-> idfstfen1--Account Token-> stfen5

问题原因

msg.set_content()方法每次调用都会完全覆盖邮件的原有内容,循环中每次迭代都替换了邮件内容,最终仅保留最后一次循环设置的内容。

修正方案

先将所有需要展示的内容拼接成一个完整的字符串,再一次性设置为邮件内容。同时建议将变量id改为id_,避免与Python内置关键字冲突。

修正后的代码

import smtplib
from email.message import EmailMessage

tokens = ['stfen1','stfen2','stfen3','stfen4','stfen5']
ids = ['idfstfen1','idfstfen1','idfstfen1','idfstfen1','idfstfen1',]
EMAIL_ADDRESS = ('example@gmail.com')
EMAIL_PASSWORD = ('password')

msg = EmailMessage()
msg['Subject'] = f'EMP Data'
msg['From'] = f'Name <{EMAIL_ADDRESS}>'
msg['To'] = f'Name <{EMAIL_ADDRESS}>'

# 先构建完整的邮件内容
email_content = ""
for num, (token, id_) in enumerate(zip(tokens, ids), start=1):
    email_content += f'Data\n{num}: Account ID-> {id_}--Account Token-> {token}\n\n'

# 一次性设置邮件内容
msg.set_content(email_content)

with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
    smtp.send_message(msg)

验证结果

修正后发送的邮件会完整展示所有5条数据,与期望输出一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:06:29