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

已实现Python向Gmail发送单张图片,如何修改代码发送多图附件?

如何修改Python代码实现Gmail发送多张截图?

嘿,你现在的代码只处理了单张图片,要发多张的话,核心是把单张图片的处理逻辑改成循环遍历多个图片文件,我帮你梳理下具体要改的地方和完整代码:

要修改的核心部分:

  • 把单个图片路径 fp='1.jpg' 改成一个包含所有目标图片的列表,比如 image_paths = ['1.jpg', '2.jpg', '3.png'](支持不同格式的图片)
  • 用for循环遍历这个列表,逐个读取图片、编码并添加为邮件附件
  • 另外你代码里定义了msgRoot和msgAlternative但没实际用到,这些可以删掉,避免冗余

修改后的完整代码:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

email_user = 'hello@gmail.com'
password_user = '**********'
email_send = 'hello@gmail.com'
subject = 'Python'

# 初始化邮件主体
msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = email_send
msg['Subject'] = subject

# 添加邮件正文
body = 'hello'
msg.attach(MIMEText(body,'plain'))

# 定义要发送的所有图片路径列表
image_paths = ['1.jpg', '2.jpg', 'screenshot.png']  # 替换成你的实际图片路径

# 循环处理每张图片,添加为附件
for fp in image_paths:
    attachment = open(fp, 'rb')
    part = MIMEBase('application','octet-stream')
    part.set_payload(attachment.read())
    encoders.encode_base64(part)
    # 设置附件的文件名和头部信息
    part.add_header('Content-Disposition', f"attachment; filename= {fp}")
    msg.attach(part)
    attachment.close()  # 记得关闭文件句柄,避免资源占用

# 发送邮件
text = msg.as_string()
server = smtplib.SMTP('smtp.gmail.com',587)
server.starttls()
server.login(email_user, password_user)
server.sendmail(email_user, email_send, text)
server.quit()

额外说明:

  • 如果你想让图片内嵌在邮件正文中(而不是作为附件),可以改用MIMEImage类,不过看你需求是发送截图,作为附件应该更符合预期
  • 记得替换image_paths里的路径为你实际的截图路径,支持jpg、png等常见格式
  • 关闭文件句柄是个好习惯,避免不必要的资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 08:42:54