Python:附加MIME编码文本文件

0 投票
1 回答
612 浏览
提问于 2025-04-18 07:15

经过一番折腾,我终于找到了把文本文件附加到电子邮件上的神奇步骤(非常感谢之前在这个服务上发布的帖子)。

我现在想知道以下这些代码行:

attachment.add_header('Content-Disposition'. . .)

--和--

e_msg = MIMEMultipart('alternative')

到底是干什么用的。

有人能帮我解释一下这些Mimes的作用吗?(抱歉,我忍不住开个玩笑)

import smtplib
from email import Encoders
from email.message import Message
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

smtp_server = "1.2.3.4"
smtp_login = "account"
smpt_password = "password"

server = smtplib.SMTP(smtp_server)
server.login(smtp_login,smtp_password)

f = file("filename.csv")
attachment = MIMEText(f.read())
attachment.add_header('Content-Disposition', 'attachment', filename="filename.csv")
e_msg = MIMEMultipart('alternative')
e_msg.attach(attachment)
e_msg['Subject'] = 'Domestic Toll Monitor'
e_msg['From'] = smtp_account
body = 'Some nifty text goes here'
content = MIMEText(body)
e_msg.attach(content)
server.sendmail(smtp_from, smtp_to, e_msg.as_string())

1 个回答

1

简单来说,MIME是一种定义电子邮件结构的标准。它的多部分结构设计是为了让同一封邮件可以包含多种类型的消息和附件。比如,一封邮件可能会有一个普通文本版本,以便老旧的邮件客户端可以读取,同时也会有一个富文本或HTML格式的版本,供现代客户端使用。附件被视为一个“部分”,因此需要有自己的头部信息。在这种情况下,你需要为附件添加一个“Content-Disposition”类型的头部。如果你对这个内容感兴趣,可以在这里查看详细说明。至于“Alternative部分”,你是在设置邮件为多部分,并定义你附加的部分类型,以及客户端需要如何处理它们。有一些标准的预设定义了不同的场景,但Alternative可以看作是一个通配符,用于处理那些大多数客户端可能无法识别或处理的部分。顺便提一下,我认为你也可以使用“Mixed”类型。MIME的一个好处是,虽然它看起来复杂,但定义得很清楚,查找相关的标准也非常简单。

撰写回答