已实现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
相关产品推荐
相关产品推荐

