You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django函数视图中使用Brevo API发送邮件的问题解决

解决Django函数视图中Brevo API发送邮件的问题

错误原因

你碰到的'User' object has no attribute 'swagger_types'报错,本质是直接把Django的User模型实例传给了Brevo SDK的方法——Brevo的SDK依赖自身定义的实体类(带swagger_types属性)构造请求,Django原生的User对象完全不符合这个要求。

正确实现步骤

假设你用的是Brevo官方Python SDK(sib-api-v3-sdk),以下是函数视图里的标准写法:

  1. 导入Brevo必要类
from sib_api_v3_sdk import ApiClient, Configuration, SendSmtpEmail, SendSmtpEmailSender, SendSmtpEmailTo
from sib_api_v3_sdk.rest import ApiException
from django.http import HttpResponse
from django.contrib.auth.models import User
  1. 初始化Brevo客户端
    可以把这部分封装成工具函数复用,这里先写在视图里:
def send_approval_email(request):
    # 从settings里读取API密钥更规范
    configuration = Configuration()
    configuration.api_key['api-key'] = '你的Brevo API密钥'
    
    api_client = ApiClient(configuration)
  1. 构造符合Brevo要求的邮件对象
    别直接传User对象,提取User的邮箱、姓名等字段,用Brevo的实体类包装:
# 获取审批人(示例:从请求参数取ID查库)
    approver = User.objects.get(id=request.POST.get('approver_id'))
    
    # 构造发件人:用Brevo的SendSmtpEmailSender类
    sender = SendSmtpEmailSender(email="your-sender@example.com", name="系统管理员")
    
    # 构造收件人:提取User的邮箱和姓名,创建Brevo的收件人对象
    recipient = SendSmtpEmailTo(email=approver.email, name=approver.get_full_name())
    
    # 组装完整邮件内容
    send_email_data = SendSmtpEmail(
        sender=sender,
        to=[recipient],
        subject="新申请待审批",
        html_content="<h3>请处理以下申请:</h3><p>申请详情...</p>"
    )
  1. 调用API发送邮件
try:
        from sib_api_v3_sdk import TransactionalEmailsApi
        api_instance = TransactionalEmailsApi(api_client)
        api_response = api_instance.send_transac_email(send_email_data)
        # 这里可以加成功后的业务逻辑,比如跳转或返回响应
        return HttpResponse("审批邮件已发送")
    except ApiException as e:
        print(f"邮件发送失败:{e}")
        return HttpResponse("邮件发送失败", status=500)

额外注意事项

  • 绝对不要把Django的任何模型实例直接传给Brevo SDK方法,必须提取字段后用Brevo的实体类包装。
  • 建议把Brevo客户端初始化、邮件发送逻辑封装成独立工具函数(比如放在utils/brevo_email.py),减少重复代码。
  • 确保你的API密钥有发送交易邮件的权限,且发件邮箱已在Brevo后台完成验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:15:13