如何将多个文件附加到电子邮件?

问题描述

我正在使用以下模块通过python发送电子邮件

DENSE_RANK

我想发送多个附件,但是由于某些原因它们没有附上?程序不返回错误

这是程序的一部分,它使用文件路径的元组附加到电子邮件。为什么这不起作用,我如何使其起作用?

import tkinter as tk
from tkinter import filedialog
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import email,smtplib,ssl

很高兴提供更多详细信息...

编辑:

我尝试使用其他问题,但没有任何附件。我也没有任何错误...

编辑2:

for file in filelist:
    with open(file,"rb") as attachment:
        attachment_part = MIMEBase("application","octet-stream")
        attachment_part.set_payload(attachment.read())
        encoders.encode_base64(attachment_part)
        attachment_part.add_header(
            "Content-disposition",f"attachment; filename = {filename}",)
        message.attach(attachment_part)

    # Create Server Connection
    with smtplib.SMTP_SSL("smtp.gmail.com",465,context=context) as server:
        server.login(config.email_sender,config.email_password)
        server.sendmail(
            sender_email,reciever_email,message.as_string()
        )

解决方法

编辑:问题最终是由问题中未显示的代码引起的,该代码导致adapter.submitList(items,() -> { recyclerView.scrollToPosition(0); }); 为空。但是最初在问题中显示的代码也是错误的。因此保留了原始答案。


在您的代码中,您有以下内容:

filelist

您的缩进以及因此在此代码中传达了程序逻辑。代替先创建消息,而是附加所有文件,然后发送消息,您将在每次附加文件后发送一条新消息。

您需要做的是将邮件的发送从文件列表中移出循环:

for file in filelist:
    with open(file,"rb") as attachment:
        ...
        message.attach(attachment_part)

    # Create Server Connection
    with smtplib.SMTP_SSL("smtp.gmail.com",465,context=context) as server:
        ...
,

在我的主要功能中,我正在选择文件并将路径放入列表中的功能未全球化。

但是,由于某种原因,它没有给我任何错误。