Python中使用email.mime.multipartMIMEMultipart()创建多部分邮件
发布时间:2023-12-26 08:27:16
在Python中,使用MIMEMultipart类可以方便地创建多部分邮件。多部分邮件是一种包含多个不同内容类型(如文本、图片、附件等)的邮件。以下是使用MIMEMultipart类创建多部分邮件的示例代码:
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication
import smtplib
from getpass import getpass
# 设置发件人、收件人和邮件主题
from_addr = 'sender@example.com'
to_addr = 'receiver@example.com'
subject = 'Test Email'
# 创建多部分邮件对象
msg = MIMEMultipart()
# 添加文本内容
text = MIMEText('This is the body of the email.')
msg.attach(text)
# 添加图片附件
with open('image.jpg', 'rb') as f:
image = MIMEImage(f.read())
image.add_header('Content-Disposition', 'attachment', filename='image.jpg')
msg.attach(image)
# 添加PDF附件
with open('document.pdf', 'rb') as f:
pdf = MIMEApplication(f.read())
pdf.add_header('Content-Disposition', 'attachment', filename='document.pdf')
msg.attach(pdf)
# 设置邮件头部信息
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject
# 发送邮件
smtp_server = 'smtp.gmail.com' # 设置SMTP服务器地址
smtp_port = 587 # 设置SMTP服务器端口
try:
password = getpass('Enter your email password: ')
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(from_addr, password)
server.send_message(msg)
server.quit()
print('Email sent successfully!')
except Exception as e:
print(f'Failed to send email. Error message: {str(e)}')
上述代码中,首先导入了所需的模块和类。然后,设置发件人、收件人和邮件主题。创建了一个MIMEMultipart对象,用于构建多部分邮件。
接下来,使用MIMEText类创建了一个包含邮件正文的文本对象,并将其添加到MIMEMultipart对象中。
通过打开图片文件,使用MIMEImage类创建了一个图片对象,并将其作为附件添加到MIMEMultipart对象中。类似地,打开PDF文件,使用MIMEApplication类创建了一个PDF对象,并将其作为附件添加到MIMEMultipart对象中。
然后,设置了邮件的发件人、收件人和主题信息,并通过输入发件人邮箱的密码来进行SMTP登录。
最后,使用SMTP类通过指定的SMTP服务器和端口发送邮件,并在发送成功后打印信息。
总结:以上是使用MIMEMultipart类创建多部分邮件的示例代码,通过添加不同类型的内容和附件,可以轻松构建多部分邮件并发送。
