You need to enable JavaScript to run this app. 如何通过Django发送包含iframe的邮件?
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Django发送包含iframe的邮件?

Django 发送嵌入谷歌地图iframe的HTML邮件实现步骤

前置说明

绝大多数邮件客户端默认会拦截iframe内容以防范恶意代码,发送前请先确认目标用户常用的邮件客户端是否支持iframe加载,无法支持的场景建议替换为谷歌地图静态图片,点击图片跳转至网页版地图地址

步骤1:配置Django邮件基础参数

在项目settings.py中添加SMTP服务配置,示例如下:

# settings.py 邮件配置示例
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = '你的SMTP服务地址' # 如smtp.gmail.com、smtp.qq.com
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = '你的发件邮箱'
EMAIL_HOST_PASSWORD = '你的邮箱授权码'
DEFAULT_FROM_EMAIL = '发件人展示名称 <你的发件邮箱>'

步骤2:准备带iframe的HTML邮件模板

在项目templates目录下新建邮件HTML模板,例如activity_map_email.html,直接写入你已有的带谷歌地图iframe的模板代码即可,注意iframe的src必须使用HTTPS协议:

<!-- templates/activity_map_email.html 示例 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>活动位置通知</title>
</head>
<body>
    <p>您好,本次活动的具体位置如下:</p>
    <!-- 替换为你自己的谷歌地图iframe代码 -->
    <iframe 
        src="https://www.google.com/maps/embed?pb=你的地图专属参数" 
        width="600" 
        height="450" 
        style="border:0;"
        allowfullscreen=""
        loading="lazy"
    ></iframe>
</body>
</html>

步骤3:编写邮件发送逻辑

使用Django内置的EmailMultiAlternatives类发送带HTML内容的邮件,同时提供纯文本兜底内容适配不支持HTML的客户端:

# 你的业务逻辑文件,如views.py、tasks.py
from django.core.mail import EmailMultiAlternatives
from django.template.loader import render_to_string

def send_activity_map_email(receiver_list):
    # 渲染HTML邮件模板,需要传递动态参数时可添加第二个参数context={'key':value}
    html_content = render_to_string('activity_map_email.html')
    # 纯文本兜底内容
    text_content = '您的邮件客户端不支持HTML内容,可点击链接查看活动位置:https://www.google.com/maps/place/你的位置地址'

    # 构造邮件对象
    mail_msg = EmailMultiAlternatives(
        subject="本次活动位置通知",
        body=text_content,
        to=receiver_list
    )
    # 附加HTML格式内容
    mail_msg.attach_alternative(html_content, "text/html")
    # 执行发送
    mail_msg.send()

注意事项

  • 正式发送前先做多邮箱测试,向Gmail、Outlook、国内常用邮箱发送测试邮件确认iframe可正常加载,部分企业邮箱、国内个人邮箱会完全拦截iframe
  • 不要在iframe内添加任何脚本代码,所有邮件客户端都会禁止iframe内的脚本执行
  • 批量发送邮件建议搭配Celery做异步处理,避免阻塞主业务流程

内容的提问来源于stack exchange,提问作者Alexei Safronov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 19:24:04