如何解决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 举报,一经查实,本站将立刻删除。