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

Python中利用email.MIMEMultipartMIMEMultipart()实现多种邮件格式的转换

发布时间:2024-01-07 23:15:13

在Python中,邮箱模块(email)提供了一个MIMEMultipart类来处理复杂的邮件格式,可以同时包含多种邮件内容,例如文本、HTML和附件等。下面是一个使用email.MIMEMultipart.MIMEMultipart()实现多种邮件格式的例子:

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

# 设置发送者、接收者、邮件主题
sender = 'sender@example.com'
receiver = 'receiver@example.com'
subject = 'Example Email'

# 创建MIMEMultipart对象
msg = MIMEMultipart()

# 添加文本信息
text = 'This is plain text.'
text_part = MIMEText(text, 'plain')
msg.attach(text_part)

# 添加HTML信息
html = '<html><body><h1>This is HTML text.</h1></body></html>'
html_part = MIMEText(html, 'html')
msg.attach(html_part)

# 添加图片附件
with open('image.jpg', 'rb') as f:
    image_data = f.read()
image_part = MIMEImage(image_data, name='image.jpg')
msg.attach(image_part)

# 发送邮件
try:
    smtp_obj = smtplib.SMTP('smtp.example.com')
    smtp_obj.sendmail(sender, receiver, msg.as_string())
    smtp_obj.quit()
    print('Email sent successfully.')
except smtplib.SMTPException as e:
    print('Failed to send email:', e)

在上面的例子中,我们首先导入了需要的模块,然后设置了发送者、接收者和邮件主题等基本信息。

接下来,我们创建了一个MIMEMultipart对象并保存到变量msg中。然后在msg对象中添加了文本信息、HTML信息和图片附件。

我们使用email.mime.text.MIMEText类创建了一个文本邮件部分,并将其附加到msg对象中。第一个参数是邮件正文内容,第二个参数是邮件格式('plain'表示普通文本)。

同样地,我们使用email.mime.text.MIMEText类创建了一个HTML邮件部分,并将其附加到msg对象中。这里将邮件正文内容放在了<html><body>...</body></html>标签中,第二个参数还是指定格式为'html'。

最后,我们以二进制格式打开图片文件,读取图片数据,并使用email.mime.image.MIMEImage类创建了一个图片邮件部分。并将其附加到msg对象中。注意,需要指定图片名称(name参数)。

最后,我们使用smtplib模块创建一个SMTP对象,连接到SMTP服务器并发送邮件。将msg对象转换成字符串并作为sendmail()方法的参数传入。发送完毕后,我们关闭SMTP连接。

这就是使用email.MIMEMultipart.MIMEMultipart()实现多种邮件格式的转换的基本用法。可以根据实际需求,添加更多的邮件部分,如PDF附件、音频等。