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

生产环境中Nodemailer对接SendinBlue抛出530无效凭证错误求助

可能的原因及对应解决方案

  • SendinBlue IP白名单限制
    SendinBlue默认会拦截未加入信任列表的IP地址的SMTP登录请求,即使用户名和密码完全正确也会返回530 Invalid username or password错误。你之前部署在Netlify时对应的出口IP可能已经被默认信任或者手动加入过白名单,而DigitalOcean Droplet的公网IP未被添加至SendinBlue后台的SMTP信任IP列表,是该问题最高发的原因。你可以登录SendinBlue控制台,在SMTP设置页面将Droplet的公网IP加入白名单后重试。
  • 环境变量实际值偏差
    你确认环境变量正常的前提下,仍需排查两处细节:一是Droplet上的.env文件中对应变量是否包裹了多余的引号,部分环境变量加载器会将引号作为值的一部分读取,导致密码校验失败;二是确保该段Nodemailer代码运行在Next.js的服务器端(接口路由、Server Component等),客户端侧代码无法读取NEXT_PUBLIC_前缀以外的环境变量,会导致读取到的账号密码为空。你可以在发送邮件的代码前添加日志打印process.env.SEND_IN_BLUE_USER和process.env.SEND_IN_BLUE_PASS,核对DO服务日志中的输出值是否和预期一致。
  • 密钥类型不匹配
    SendinBlue的API密钥和SMTP密钥是两套独立的密钥体系,API密钥仅可用于调用SendinBlue的HTTP接口,不可用于SMTP登录校验。确认你在DO环境中配置的SEND_IN_BLUE_PASS是SMTP专属密钥,而非普通的API密钥。
  • Nodemailer内置服务配置异常
    部分版本的Nodemailer内置的SendinBlue服务配置可能存在变动,你可以放弃service字段,显式指定SMTP配置规避该问题:
    const transporter = nodemailer.createTransport({
      host: "smtp-relay.brevo.com", // SendinBlue已更名为Brevo,新的SMTP域名
      port: 587,
      secure: false,
      auth: {
        user: process.env.SEND_IN_BLUE_USER,
        pass: process.env.SEND_IN_BLUE_PASS,
      },
    });
    
  • 账号权限临时受限
    若刚好在切换部署平台的时间段内你的SendinBlue账号触发了发信量超限、身份校验未完成等限制,也会导致SMTP登录被拒绝,可登录SendinBlue后台查看账号状态及告警通知确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:06:00