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

如何在Python中使用MIMEMultipart()发送带有图片附件的邮件

发布时间:2023-12-25 18:29:25

在Python中使用MIMEMultipart()发送带有图片附件的邮件,可以按照以下步骤进行:

1. 首先,导入必要的模块,包括smtplib用于发送邮件,MIMEMultipart用于创建邮件内容,MIMEText用于创建邮件正文,以及MIMEImage用于添加图片附件。

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

2. 创建MIMEMultipart对象,并设置邮件的基本信息,如发件人、收件人、主题等。

msg = MIMEMultipart()
msg['From'] = "sender@example.com"
msg['To'] = "recipient@example.com"
msg['Subject'] = "Subject of the Email"

3. 创建邮件的正文内容,并将其添加到MIMEMultipart对象中。可以使用MIMEText来创建纯文本或HTML格式的邮件正文。

body = "This is the email body"
msg.attach(MIMEText(body, 'plain'))

4. 加载图片文件,并创建MIMEImage对象,并将其添加到MIMEMultipart对象中。图片文件需要以二进制模式打开,然后设置图片的Content-Disposition属性为attachment,指定图片附件的文件名。

with open("image.jpg", "rb") as f:
    image = MIMEImage(f.read())
    image.add_header('Content-Disposition', "attachment; filename= image.jpg")
    msg.attach(image)

5. 使用smtplib模块的SMTP函数连接到SMTP服务器,并登录发件人的账号。

server = smtplib.SMTP("smtp.example.com", 587)
server.starttls()
server.login("sender@example.com", "password")

6. 发送邮件,将MIMEMultipart对象作为参数传递给sendmail函数。

server.sendmail("sender@example.com", "recipient@example.com", msg.as_string())

7. 关闭SMTP服务器的连接。

server.quit()

以下是完整的示例代码:

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

# 创建MIMEMultipart对象
msg = MIMEMultipart()
msg['From'] = "sender@example.com"
msg['To'] = "recipient@example.com"
msg['Subject'] = "Subject of the Email"

# 设置邮件正文
body = "This is the email body"
msg.attach(MIMEText(body, 'plain'))

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

# 连接SMTP服务器并发送邮件
server = smtplib.SMTP("smtp.example.com", 587)
server.starttls()
server.login("sender@example.com", "password")
server.sendmail("sender@example.com", "recipient@example.com", msg.as_string())
server.quit()

以上就是在Python中使用MIMEMultipart()发送带有图片附件的邮件的方法和示例。