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

Python中使用email.MIMEMultipartMIMEMultipart()生成带内嵌图片的邮件

发布时间:2024-01-07 23:12:27

在Python中,我们可以使用email模块来发送带有内嵌图片的邮件。MIMEMultipart类提供了创建带有附件和内嵌资源的多部分邮件的功能。

下面是一个生成带有内嵌图片的邮件的例子:

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

def send_email_with_image(sender_email, receiver_email, subject, message, image_path):
    # 创建一个带有附件的邮件对象
    msg = MIMEMultipart('related')
    msg['From'] = sender_email
    msg['To'] = receiver_email
    msg['Subject'] = subject

    # 创建文本部分
    text_part = MIMEText(message, 'plain')
    msg.attach(text_part)

    # 创建内嵌图片部分
    with open(image_path, 'rb') as fp:
        image_part = MIMEImage(fp.read())
    image_part.add_header('Content-ID', '<image>')
    msg.attach(image_part)

    # 发送邮件
    try:
        smtp_obj = smtplib.SMTP('smtp.gmail.com', 587)
        smtp_obj.starttls()
        smtp_obj.login('your_email@gmail.com', 'your_password')
        smtp_obj.send_message(msg)
        smtp_obj.quit()
        print('邮件发送成功')
    except Exception as e:
        print('发送邮件时出现错误:', str(e))

# 调用函数发送邮件
send_email_with_image('your_email@gmail.com', 'recipient_email@gmail.com', '示例邮件', '这是一封带有内嵌图片的邮件', 'path_to_image.png')

在上面的例子中,我们首先导入了所需的模块:smtplib用于发送邮件,MIMEMultipart用于创建多部分邮件,MIMEText用于创建文本部分,MIMEImage用于创建图片部分。

然后,我们定义了一个send_email_with_image函数来发送带有内嵌图片的邮件。该函数接受发送者的邮箱地址、接收者的邮箱地址、邮件主题、邮件内容和图片路径作为参数。首先,我们创建一个带有附件的邮件对象msg,并设置发件人、收件人和主题。

然后,我们使用open函数打开图片文件,并使用MIMEImage类读取图片内容。我们通过调用add_header方法为图片部分添加一个Content-ID头,这样我们就可以在HTML中引用该图片。

接下来,我们使用attach方法将文本部分和图片部分添加到邮件对象中。

最后,我们使用SMTP服务器发送邮件。我们通过创建SMTP对象并调用starttls方法启用TLS加密。然后,我们使用login方法登录到发件人的邮箱,将邮件对象传递给send_message方法发送邮件,最后调用quit方法退出SMTP会话。

运行此代码将发送一封带有内嵌图片的邮件。你需要将your_email@gmail.com替换为发送者的邮箱地址,your_password替换为发送者邮箱的授权密码,recipient_email@gmail.com替换为接收者的邮箱地址,path_to_image.png替换为你要发送的图片的路径。

希望这个例子可以帮助你生成带有内嵌图片的邮件。如果你想了解更多关于email模块的内容,可以参考Python官方文档。