Django 中如何发送带有图像的电子邮件

2023-04-11 00:00:00 图像 电子邮件 带有

在 Django 中发送带有图像的电子邮件可以使用 Django 自带的 EmailMessage 类。具体实现如下:

from django.core.mail import EmailMessage
from django.conf import settings
from django.template.loader import get_template
from django.template import Context
from django.utils.html import strip_tags

def send_email_with_image(subject, to_email, image_path):
    # 获取邮件模板
    html_message = get_template('email_with_image.html').render({'image_path': image_path})
    # 获取纯文本版本
    text_message = strip_tags(html_message)

    # 生成邮件实例
    email = EmailMessage(
        subject=subject,
        body=text_message,
        to=[to_email],
        from_email=settings.DEFAULT_FROM_EMAIL
    )

    # 添加 HTML 版本
    email.content_subtype = 'html'
    email.attach_file(image_path)

    # 发送邮件
    email.send()

以上代码演示了如何在 Django 中发送一封带有图像的电子邮件。其中,get_template 函数用于获取邮件模板,模板中可以使用 image_path 变量来插入图像的路径。 strip_tags 函数用于获取纯文本版本的邮件内容。 EmailMessage 类用于实例化邮件对象,并设置发送目标、发送者、邮件主题和邮件正文(正文部分只包含纯文本版本)。然后,使用 content_subtype 属性设置邮件内容的格式为 HTML,在邮件中添加附件图片,并发送邮件。

下面是 email_with_image.html 模板文件的示例代码:

<html>
<head></head>
<body>
    <p>亲爱的用户:</p>
    <p>请查看以下图片:</p>
    <img src="{{ image_path }}"/>
</body>
</html>

在上述模板中,使用 {{ image_path }} 语法来插入 send_email_with_image 函数中传入的 image_path 变量。这样,当邮件发送时,{{ image_path }} 将会被替换为该图像的路径。

下面是使用 send_email_with_image 函数发送带有图片的电子邮件的示例代码:

subject = '电子邮件主题'
to_email = 'example@example.com'
image_path = '/home/yourname/pidancode.com.png'

send_email_with_image(subject, to_email, image_path)

在上述示例中,subject 变量设置邮件主题,to_email 变量设置邮件接收者的电子邮件地址,image_path 变量设置邮件中要添加的图像的路径。最后,调用 send_email_with_image 函数发送带有图片的电子邮件。

相关文章