发送网格 API 400
SendGrid API 400
我正在尝试使用 SendGrid 的集成 here,但没有成功。目前我正在尝试在登录时发送一封电子邮件(这样我就有了一种快速测试它的方法),并且我不断收到 400 Bad Request
作为回复。我已从控制台注销 process.env.SENDGRID_API_KEY
以确保密钥正确,我知道这不是问题所在。它也被设置为完全访问。
完整的错误信息:
ResponseError: Bad Request
at C:\Code\Recipe Book\node_modules\@sendgrid\client\src\classes\client.js:146:29
at processTicksAndRejections (internal/process/task_queues.js:93:5) {
code: 400,
response: {
headers: {
server: 'nginx',
date: 'Wed, 28 Jul 2021 17:52:10 GMT',
'content-type': 'application/json',
'content-length': '185',
connection: 'close',
'access-control-allow-origin': 'https://sendgrid.api-docs.io',
'access-control-allow-methods': 'POST',
'access-control-allow-headers': 'Authorization, Content-Type, On-behalf-of, x-sg-elas-acl',
'access-control-max-age': '600',
'x-no-cors-reason': 'https://sendgrid.com/docs/Classroom/Basics/API/cors.html',
'strict-transport-security': 'max-age=600; includeSubDomains'
},
body: { errors: [Array] }
}
}
我不认为这是一个经典的 CORS
错误,就像我的 server.js
我有这个:(除非我在这里遗漏了什么)
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, Authorization"
);
res.setHeader(
"Access-Control-Allow-Methods",
"GET, POST, PATCH, PUT, DELETE, OPTIONS"
);
next();
});
我试过将 On-behalf-of, x-sg-elas-acl
添加到允许的 headers 中,但结果没有改变。这些应该包括在内吗?
它似乎也在 400
和 401
之间随意切换,老实说我不知道为什么。这是 401
消息:
ResponseError: Unauthorized
at C:\Code\Recipe Book\node_modules\@sendgrid\client\src\classes\client.js:146:29
at processTicksAndRejections (internal/process/task_queues.js:93:5) {
code: 401,
response: {
headers: {
server: 'nginx',
date: 'Wed, 28 Jul 2021 18:04:59 GMT',
'content-type': 'application/json',
'content-length': '97',
connection: 'close',
'access-control-allow-origin': 'https://sendgrid.api-docs.io',
'access-control-allow-methods': 'POST',
'access-control-allow-headers': 'Authorization, Content-Type, On-behalf-of, x-sg-elas-acl',
'access-control-max-age': '600',
'x-no-cors-reason': 'https://sendgrid.com/docs/Classroom/Basics/API/cors.html',
'strict-transport-security': 'max-age=600; includeSubDomains'
},
body: { errors: [Array] }
}
}
当我设置发件人身份验证时,我验证了一个域而不是单个发件人,尽管我仍在开发环境中对此进行测试并且在尝试发送电子邮件时不在我的域中。这也会引起问题吗?
问题是否还在于我正在本地主机上进行测试,而 sendgrid IP 访问管理允许我当前的 IP 但不允许本地主机访问?虽然我不太确定将本地主机添加为允许的 IP 是个好主意。
原来问题是我将电子邮件的 from
字段设置为与我的域验证发件人不匹配的内容。将其向右更改 @
解决了问题,并且电子邮件发送没有问题。
我正在尝试使用 SendGrid 的集成 here,但没有成功。目前我正在尝试在登录时发送一封电子邮件(这样我就有了一种快速测试它的方法),并且我不断收到 400 Bad Request
作为回复。我已从控制台注销 process.env.SENDGRID_API_KEY
以确保密钥正确,我知道这不是问题所在。它也被设置为完全访问。
完整的错误信息:
ResponseError: Bad Request
at C:\Code\Recipe Book\node_modules\@sendgrid\client\src\classes\client.js:146:29
at processTicksAndRejections (internal/process/task_queues.js:93:5) {
code: 400,
response: {
headers: {
server: 'nginx',
date: 'Wed, 28 Jul 2021 17:52:10 GMT',
'content-type': 'application/json',
'content-length': '185',
connection: 'close',
'access-control-allow-origin': 'https://sendgrid.api-docs.io',
'access-control-allow-methods': 'POST',
'access-control-allow-headers': 'Authorization, Content-Type, On-behalf-of, x-sg-elas-acl',
'access-control-max-age': '600',
'x-no-cors-reason': 'https://sendgrid.com/docs/Classroom/Basics/API/cors.html',
'strict-transport-security': 'max-age=600; includeSubDomains'
},
body: { errors: [Array] }
}
}
我不认为这是一个经典的 CORS
错误,就像我的 server.js
我有这个:(除非我在这里遗漏了什么)
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, Authorization"
);
res.setHeader(
"Access-Control-Allow-Methods",
"GET, POST, PATCH, PUT, DELETE, OPTIONS"
);
next();
});
我试过将 On-behalf-of, x-sg-elas-acl
添加到允许的 headers 中,但结果没有改变。这些应该包括在内吗?
它似乎也在 400
和 401
之间随意切换,老实说我不知道为什么。这是 401
消息:
ResponseError: Unauthorized
at C:\Code\Recipe Book\node_modules\@sendgrid\client\src\classes\client.js:146:29
at processTicksAndRejections (internal/process/task_queues.js:93:5) {
code: 401,
response: {
headers: {
server: 'nginx',
date: 'Wed, 28 Jul 2021 18:04:59 GMT',
'content-type': 'application/json',
'content-length': '97',
connection: 'close',
'access-control-allow-origin': 'https://sendgrid.api-docs.io',
'access-control-allow-methods': 'POST',
'access-control-allow-headers': 'Authorization, Content-Type, On-behalf-of, x-sg-elas-acl',
'access-control-max-age': '600',
'x-no-cors-reason': 'https://sendgrid.com/docs/Classroom/Basics/API/cors.html',
'strict-transport-security': 'max-age=600; includeSubDomains'
},
body: { errors: [Array] }
}
}
当我设置发件人身份验证时,我验证了一个域而不是单个发件人,尽管我仍在开发环境中对此进行测试并且在尝试发送电子邮件时不在我的域中。这也会引起问题吗?
问题是否还在于我正在本地主机上进行测试,而 sendgrid IP 访问管理允许我当前的 IP 但不允许本地主机访问?虽然我不太确定将本地主机添加为允许的 IP 是个好主意。
原来问题是我将电子邮件的 from
字段设置为与我的域验证发件人不匹配的内容。将其向右更改 @
解决了问题,并且电子邮件发送没有问题。