微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NodeJS Sendgrid 401 未经授权

如何解决NodeJS Sendgrid 401 未经授权

在我的节点快速服务器中注册用户后,我想发送一封验证电子邮件。如果创建了用户,我将使用此功能发送电子邮件

import dotenv from 'dotenv'
import sgMail from '@sendgrid/mail'

sgMail.setApiKey(process.env.SENDGRID_API_KEY)

const sendEmail = (to,token) => {
    const msg = {
        to,from: process.env.SENDGRID_SENDER,subject: 'Email Verification',text: `Please click the following link: http://localhost:5000/${token}`
    }
    
    sgMail
     .send(msg)
     .then((response) => {
        console.log(response[0].statusCode)
        console.log(response[0].headers)
    })
     .catch((error) => {
        console.error(error)
    })
}

export { sendEmail }

这里被称为:

const registerUser = asyncHandler(async (req,res) => {
  const { name,email,password } = req.body

  const userExists = await User.findOne({ email })

  if (userExists) {
    res.status(400)
    throw new Error('User already exists')
  }

  const user = await User.create({
    name,password
  })

  if (user) {
    sendEmail(user.email,user.token) //HERE
    res.status(201).json({
      _id: user._id,name: user.name,email: user.email,isAdmin: user.isAdmin,isverified: user.isverified,token: generatetoken(user._id),})
  } else {
    res.status(400)
    throw new Error('Invalid user data')
  }
})

我遇到的问题是在发出请求时收到 ResponseError Unauthorized(代码 401)。用户确实在系统中创建。在我的 sendgrid 帐户中,我已经验证了具有完全访问权限的发件人电子邮件,并将我的 API 密钥存储在我的 .env 文件中。

我使用了 10 分钟的邮件帐户来测试这个和真实的电子邮件帐户。

解决方法

如果 401 状态来自 sendgrid,那么您的 env 变量可能未解析。 导入 dotenv

后试试这一行
dotenv.config()

如果它不起作用,请尝试在使用它之前控制台.记录 process.env.SENDGRID_API_KEY 以确保它在那里。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。