Flask web表单上传文件并将其用作附件,而无需在两者之间保存

Flask webform upload file and use it as attachment without saving in between

提问人:Skay 提问时间:8/6/2023 更新时间:8/6/2023 访问量:29

问:

案例:

  1. 使用烧瓶创建了一个 Web 表单来上传文件
  2. 在发布时,我想将上传的文件直接用作添加到邮件中的附件。 无需在操作之间保存上传的文件。 (所以主要是通过网络表单,我想邮寄上传的文件)

在帖子操作中,我阅读了上传的文件列表,如下所示:

files = request.files.getlist("file")

之后,我使用下面的代码创建一个带有附件的测试邮件。邮件已发送,我有附件文件,但它们都是 0kb 且无用。

有人知道如何在不先保存文件(使用空格)的情况下在发送前执行此技巧吗?

欢迎所有意见,

问候

斯凯

    # Define email sender and receiver
    email_sender = os.environ['EMAILSENDER']
    email_password = os.environ['EMAILPASWOORD']
    email_receiver = Emailreceiver

    # Set the subject and body of the email
    subject = 'Mail test'
    body = """
    Check if it works
    """

    em = MIMEMultipart()
    em['From'] = email_sender
    em['To'] = email_receiver
    em['Subject'] = subject
    em.attach(MIMEText(body))
    #em.set_content(body)

    for file in files:
        part = MIMEBase('application', "octet-stream")
        
        #with open(file.filename, 'rb') as file_open:
        #file.save(file.filename)
        part.set_payload(file.read())
        encoders.encode_base64(part)
        part.add_header('Content-Disposition',
                        'attachment; filename={}'.format(file.filename))
        em.attach(part)

    # Add SSL (layer of security)
    context = ssl.create_default_context()

    # Log in and send the email
    with smtplib.SMTP_SSL('smtp.gmail.com', 465, context=context) as smtp:
        smtp.login(email_sender, email_password)
        smtp.sendmail(email_sender, email_receiver, em.as_string())


我尝试保存文件(作品),并将它们读回以作为附件发送。 邮件有效,但在没有保存选项的选项中,文件为空。

python flask 上传 sendmail 附件

评论


答: 暂无答案