Python如何合并多组数据仅发送单封邮件 解决循环发多封问题
代码调整方案
你只需要将「多组数据合并」逻辑和「邮件发送」逻辑拆分,发送逻辑仅执行一次即可,修改后的完整代码如下:
# 合并所有待发送内容,两条数据之间用空行分隔 full_content = '\n\n'.join(result) # 仅构造、发送一次邮件 msg = EmailMessage() msg.set_content(full_content) msg['From'] = email_address msg['To'] = recipient_address msg['Subject'] = subject_desc server = smtplib.SMTP('smtp.gmail.com', 587) server.ehlo() server.starttls() server.login("youremail@gmail.com", password) print("login success") server.send_message(msg) print("汇总邮件已发送") server.quit()
如果result中的元素不是字符串类型,可以将合并代码修改为:
full_content = '\n\n'.join(str(item) for item in result)
原代码问题说明
- 最初版本将邮件构造、SMTP连接、发送的全流程放在遍历
result的循环内,有多少条数据就会触发多少次发送,自然会收到多封独立邮件 - 你尝试编写的自定义函数没有解决核心逻辑问题:即使完成了数据合并,只要发送逻辑还在循环内,依旧会多次发送,同时该函数存在参数与循环变量重名的问题,属于无效实现。
内容的提问来源于stack exchange,提问作者Oxykore
相关产品推荐
相关产品推荐

