首页 > 解决方案 > 如何在 python 中签署和发送 Mimultipart 消息?

问题描述

通常,在 python 中发送带有附件的消息是这样执行的。

import smtplib
from os.path import basename
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate

def send_mail(send_from, send_to, subject, text, files=None,
              server="127.0.0.1"):
    assert isinstance(send_to, list)

    msg = MIMEMultipart()
    msg['From'] = send_from
    msg['To'] = COMMASPACE.join(send_to)
    msg['Date'] = formatdate(localtime=True)
    msg['Subject'] = subject

    msg.attach(MIMEText(msg, 'html'))

    for f in files or []:
        with open(f, "rb") as fil:
            part = MIMEApplication(
                fil.read(),
                Name=basename(f)
            )
        # After the file is closed
        part['Content-Disposition'] = 'attachment; filename="%s"' % basename(f)
        msg.attach(part)

    smtp = smtplib.SMTP(server)
    smtp.sendmail(send_from, send_to, msg.as_string()) # The problem is here
    smtp.close()

但是,我无法执行此操作,因为要使用 ꜱᴍɪᴍᴇ 签名的部分只是正文和附件,而不是所有元数据。

在这种情况下,我需要拆分消息和元数据。但是,我仍然需要使用email.mime.multipart和 email.mime.application`` 来构建附件元数据(同时排除其他元数据)

那么如何在仍然使用 ʜᴛᴍʟ 格式和附件的同时创建带有附件的 ʜᴛᴍʟ 电子邮件?

标签: pythonpython-2.7python-2.xm2cryptosmime

解决方案


推荐阅读