Django 中如何发送带有图像的电子邮件
在 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
函数发送带有图片的电子邮件。
相关文章