欢迎访问宙启技术站
智能推送

Python中email.mime.multipart的邮件编码与解码

发布时间:2023-12-14 11:53:17

在Python中, email.mime.multipart模块提供了一种在邮件中添加附件的方法。这个模块可以让我们创建包含多个部分的邮件,每个部分可以包含文本、HTML、图片等内容。

下面是一个使用email.mime.multipart模块编写邮件的例子:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

# 创建一个多部分邮件对象
msg = MIMEMultipart()

# 设置邮件的主题、发件人和收件人
msg['Subject'] = '测试附件邮件'
msg['From'] = 'sender@example.com'
msg['To'] = 'recipient@example.com'

# 添加文本部分
text_part = MIMEText('这是邮件正文。')
msg.attach(text_part)

# 添加图片部分
with open('image.jpg', 'rb') as f:
    image_part = MIMEImage(f.read())
image_part.add_header('Content-Disposition', 'attachment; filename="image.jpg"')
msg.attach(image_part)

# 发送邮件
server = smtplib.SMTP('smtp.example.com')
server.send_message(msg)
server.quit()

这个例子里,我们首先导入了smtplib、email.mime.multipart、email.mime.text和email.mime.image模块。然后,我们创建了一个MIMEMultipart对象,用来表示整个邮件。

接下来,我们设置了邮件的主题、发件人和收件人。然后,我们创建了一个MIMEText对象来表示邮件正文,并将其添加到MIMEMultipart对象中。

然后,我们打开一个图片文件,读取其内容,并创建了一个MIMEImage对象来表示图片。我们还设置了图片的文件名和附件的内容类型,并将其添加到MIMEMultipart对象中。

最后,我们使用smtplib模块创建了一个SMTP对象,连接到SMTP服务器,并使用send_message()方法发送了邮件,最后关闭了连接。

使用以上代码可以很方便地发送带有附件的邮件。

对于解码邮件,需要使用email模块的相关方法进行操作。下面是一个例子:

import email

# 读取邮件内容
with open('email.eml', 'r') as f:
    msg = email.message_from_file(f)

# 打印邮件主题
print('Subject:', msg['Subject'])

# 打印发件人和收件人
print('From:', msg['From'])
print('To:', msg['To'])

# 打印邮件正文
for part in msg.walk():
    if part.get_content_type() == 'text/plain':
        print(part.get_payload())

这个例子中,我们首先使用email模块的message_from_file()方法从文件中读取邮件内容。然后,我们打印了邮件的主题、发件人和收件人。

接下来,我们使用邮件的walk()方法遍历邮件中的每个部分。如果部分的内容类型是文本类型,我们打印了其内容。

使用以上代码可以很方便地解码邮件,并获取邮件的各个部分。