使用MIMEText()在Python中发送包含图片的邮件
发布时间:2024-01-03 04:04:31
在Python中,我们可以使用smtplib库来发送邮件。MIMEText类可以用来创建包含文本的邮件,但是无法直接添加图片。要在邮件中包含图片,我们可以使用MIMEMultipart类结合MIMEImage类来实现。
下面是一个使用MIMEText类发送包含图片的邮件的示例代码:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
# 构建MIMEMultipart对象作为根容器
msg_root = MIMEMultipart('related')
# 添加邮件主题
msg_root['Subject'] = 'Python Test'
# 添加发件人和收件人
msg_root['From'] = 'sender@example.com'
msg_root['To'] = 'receiver@example.com'
# 添加邮件正文
msg_text = MIMEText('<b>Hello, World!</b><br><img src="cid:image1">', 'html')
msg_root.attach(msg_text)
# 添加图片
with open('image.jpg', 'rb') as f:
img_data = f.read()
msg_img = MIMEImage(img_data)
msg_img.add_header('Content-ID', '<image1>')
msg_root.attach(msg_img)
# 发送邮件
smtp_obj = smtplib.SMTP('smtp.example.com', 25)
smtp_obj.login('sender@example.com', 'password')
smtp_obj.sendmail(msg_root['From'], msg_root['To'], msg_root.as_string())
smtp_obj.quit()
在这个例子中,我们首先导入所需的库和类。然后,我们创建一个MIMEMultipart对象msg_root作为邮件的根容器。我们设置邮件主题、发件人和收件人,并使用MIMEText类创建邮件正文。在邮件正文中,我们使用了HTML标签<b>来加粗显示文字,并使用<img>标签来嵌入图片。在图片的src属性中,我们通过设置cid:image1来指定图片的Content-ID。接下来,我们读取图片文件的二进制数据,并使用MIMEImage类创建包含图片的邮件附件。我们使用add_header()方法为图片附件设置Content-ID,将其与正文中的cid:image1进行对应。最后,我们使用SMTP类连接SMTP服务器并发送邮件。
需要注意的是,要运行这个代码,你必须将代码中的'sender@example.com'、'receiver@example.com'、'smtp.example.com'、'image.jpg'、'password'替换为实际的发件人和收件人的邮箱地址、SMTP服务器地址、图片文件名和邮箱密码。
总结:
通过使用MIMEMultipart类结合MIMEImage类,我们可以在Python中发送包含图片的邮件。通过设置正文中图片的Content-ID和附件中的Content-ID进行对应,我们可以在邮件中正确地显示图片。
希望这个例子对你有帮助!
