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

Python中使用email.MIMEMultipartMIMEMultipart()构建复杂邮件体

发布时间:2024-01-07 23:10:06

使用email模块中的MIMEMultipart类,可以构建复杂的邮件体,包含多个部分,例如文本、附件、图片等。下面是一个使用例子:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase

# 构造邮件体
msg = MIMEMultipart()

# 添加文本部分
text = MIMEText('这是一封复杂的邮件体', 'plain')
msg.attach(text)

# 添加附件
with open('attachment.txt', 'rb') as f:
    attachment = MIMEText(f.read(), 'base64', 'utf-8')
    attachment["Content-Type"] = 'application/octet-stream'
    attachment["Content-Disposition"] = 'attachment; filename="attachment.txt"'
    msg.attach(attachment)

# 添加图片
with open('image.jpg', 'rb') as f:
    image = MIMEImage(f.read())
    image.add_header('Content-ID', '<image1>')  # 设置图片的Content-ID,用于在邮件中引用
    msg.attach(image)

# 添加音频
with open('audio.mp3', 'rb') as f:
    audio = MIMEAudio(f.read())
    audio.add_header('Content-Disposition', 'attachment', filename="audio.mp3")
    msg.attach(audio)

# 添加二进制附件
with open('binary.bin', 'rb') as f:
    binary = MIMEBase('application', 'octet-stream')
    binary.set_payload(f.read())
    binary.add_header('Content-Disposition', 'attachment', filename="binary.bin")
    msg.attach(binary)

# 设置邮件体的相关属性
msg['From'] = 'sender@example.com'
msg['To'] = 'receiver@example.com'
msg['Subject'] = 'This is a complex email'

# 发送邮件
# smtpObj = smtplib.SMTP()
# smtpObj.connect('smtp.example.com', 25)  # 连接到SMTP服务器
# smtpObj.login('user@example.com', 'password')  # 登录SMTP服务器
# smtpObj.sendmail(msg['From'], msg['To'], msg.as_string())  # 发送邮件
# smtpObj.quit()  # 退出SMTP服务器

上面的例子演示了如何使用email模块中的MIMEMultipart类来构建一个复杂的邮件体。邮件体包括了文本、附件、图片和音频等多个部分。每个部分都需要使用不同的MIME类型来进行表示,例如MIMEText用于文本,MIMEImage用于图片,MIMEAudio用于音频等。使用MIMEBase可以处理一些没有特定MIME类型的二进制附件。

构建好邮件体后,可以设置邮件的相关属性,如发件人、收件人、主题等。最后,使用smtplib模块中的SMTP类来发送邮件,通过connect方法连接到SMTP服务器,使用login方法登录SMTP服务器,使用sendmail方法发送邮件,最后使用quit方法退出SMTP服务器。

请在实际使用中根据你的需求和情况进行相应的修改和调整。