Nodejs V3 APIを使用してメールを送信すると、次のエラーメッセージが表示されます。
{
[SendGridError: Response error] message: 'Response error' }
{
statusCode: 401,
body: '{"errors":[{"message":"The provided authorization grant is invalid, expired, or revoked","field":null,"help":null}]}',
headers: {
server: 'nginx',
date: 'Wed, 31 Aug 2016 18:34:49 GMT',
'content-type': 'application/json',
'content-length': '116',
connection: 'close',
'x-frame-options': 'DENY'
}
}
}
このメッセージは、ライブサーバー環境と同様にローカルホストインスタンスで生成されます。
次のコードは、電子メールの送信に使用されます。
var helper = require('sendgrid').mail,
sg = require('sendgrid')(SENDGRID_API_KEY);
var from_email = new helper.Email('[email protected]');
var to_email = new helper.Email(myOwnEmail);
var subject = 'Subject';
var content = new helper.Content('text/plain', 'test');
var mail = new helper.Mail(from_email, subject, to_email, content);
var request = sg.emptyRequest({
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON()
});
sg.API(request, function(err, response) {
console.log(err, response);
if (!err) {
res.send({
message: 'An email has been sent to the provided email with further instructions.'
});
} else {
return res.status(400).send({
message: 'Failure sending email'
});
}
});
こんにちは@ ninox92 、
これは、APIキーに問題があることを意味します。
まず、SENGRID_API_KEYの値を確認してください
次に、 https://support.sendgrid.comのサポートチームに連絡して、APIキーの権限の何が問題になっているのかを調べてください。
ありがとう!
SENGRID_API_KEYが検証され、新しく作成されたAPIキーが試行されましたが、同じエラーメッセージも再現されました。
CURL POSTリクエストを使用してメールを送信しましたが、同じAPIキーを使用してメールを正常に送信できました。
もう一度サポートに連絡しようと思います。
あなたが投稿したコードにはSENGRID_API_KEY
あり、 SENDGRID_API_KEY
を意味していると思います
変数名のタイプミスを指摘していただきありがとうございます。 変更します。 それにもかかわらず、変数は私のAPIキーで正しく入力されました。
もう一度試してみましたが、再現できませんでした。 これが私が使用したコードです:
var helper = require('sendgrid').mail;
var sg = require('sendgrid')(process.env.SENDGRID_API_KEY);
var from_email = new helper.Email('[email protected]');
var to_email = new helper.Email('[email protected]');
var subject = 'Subject';
var content = new helper.Content('text/plain', 'test');
var mail = new helper.Mail(from_email, subject, to_email, content);
var request = sg.emptyRequest({
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON(),
});
sg.API(request, function(err, response) {
console.log(response.statusCode);
console.log(response.body);
console.log(response.headers);
});
有効なcURLリクエストも提供していただけますか?
次のHello、World!を使用しました。 Sendgridカールの例ページの
curl --request POST \
--url https://api.sendgrid.com/v3/mail/send \
--header 'Authorization: Bearer SENDGRID_API_KEY' \
--header 'Content-Type: application/json' \
--data '{"personalizations": [{"to": [{"email": "<my-own-email>"}]}],"from": {"email": "[email protected]"},"subject": "Hello, World!","content": [{"type": "text/plain", "value": "Heya!"}]}'
こんにちは@ ninox92 、
私が提供したコードサンプルを使用してみましたか?
このエラーは、APIキーが正しく設定されていないことを意味します。
環境変数を使用していない場合は、次のようになります。
var sg = require('sendgrid')('SG.XXXXXXXXXXXXXXXXXXX');
まったく同じコードの新しいAPIKEYを使用して新しいアカウントを作成しました。 これで、サポートが永遠にかかるのを待っている間にメールを送信できるようになりました。
フォローアップしていただきありがとうございます。ご利用いただきありがとうございます。 その他の問題が発生した場合はお知らせください。
それは私を大いに助けてくれてありがとう
こんにちはみんな私は問題を抱えていますそれは私に同じエラーを与えましたここに私が使用するコードがあります。
const express = require( 'express');
const app = express();
var sg = require( 'sendgrid')(process.env.SENDGRID_API_KEY);
var port = process.env.PORT || 8080;
app.get( '/'、function(req、res){
var helper = require( 'sendgrid')。mail;
var fromEmail = new helper.Email('[email protected] ');
var toEmail = new helper.Email('[email protected] ');
var subject = 'SendGridNode.jsライブラリのHelloWorld!';
var content = new helper.Content( 'text / plain'、 'Hello、Email!');
var mail = new helper.Mail(fromEmail、subject、toEmail、content);
var request = sg.emptyRequest({
メソッド: 'POST'、
パス: '/ v3 / mail / send'、
本文:mail.toJSON()
});
sg.API(リクエスト、関数(エラー、レスポンス){
if(エラー){
console.log( 'エラー応答を受信しました');
}
console.log(response.statusCode);
console.log(response.body);
console.log(response.headers);
});
});
app.listen(port、function(){
console.log( "リスニング:*" +ポート);
});
と私の.env.exampleファイルに
SENDGRID_API_KEY =ここにコード/ *ここにAPIコードがあります* /
post methodeを使用してAPI経由でメールを送信する必要がある場合は、次のようにする必要があります。
var helper = require( 'sendgrid')。mail;
router.post( '/'、function(req、res){
var sg=require('sendgrid')('your api key from your account');
var formEmail= new helper.Email('[email protected]');
var toEmail= new helper.Email(req.body.mail);
var subject='text';
var content = new helper.Content('text/plain', 'Your password has been successfully changed');
var mail = new helper.Mail(formEmail, subject, toEmail, content);
var request =sg.emptyRequest({
method:'POST',
path: '/v3/mail/send',
body: mail.toJSON()
});
sg.API(request , function (error , response) {
if(error){
console.log('Error response not valid');
}
});
})
module.exports = router;
トラブルでごめんなさい、今はエラーだと思いました。202エラーでした。 ごめんなさい
私がしたのと同じ問題を抱えている人のためだけに。 SendGridのクライアントライブラリの1つを使用している場合は、それが最新であることを確認してください。
私はC#ライブラリバージョン9.9.0
を使用していて、このエラーを突然発生させ始めました。 バージョン9.10.0
に更新したところ、問題は解決しました。
興味深いことに、C#Twilioライブラリで、コードを変更せずに更新で解決されたのとまったく同じ問題が発生しました。 TwilioがSendGridを取得することに同意しますか?
私の場合は次でした:
IDE(Intellij CE 2020.10.3)は、sendgrid apiキー値ej:SG.sddDDeq.qwtを取得する代わりに、enviromet変数を正しく認識しませんでした。.envファイルej: "C:/ Users / Me / MyProjectRootFolder / sendgrid.env」と、それを「Authorization」としてSendgridリクエストヘッダーに提供します:「BearerC:/Users/Me/MyProjectRootFolder/sendgrid.env:」これは、「提供された承認付与が無効です...」。
Soo ...リクエストヘッダーをデバッグして、提供されたキーが有効であることを確認してください(env変数を認識します)。また、SendGridダッシュボードからドメイン認証または単一送信者検証を追加する必要があります。
これが誰かを助けることを願っています。
最も参考になるコメント
まったく同じコードの新しいAPIKEYを使用して新しいアカウントを作成しました。 これで、サポートが永遠にかかるのを待っている間にメールを送信できるようになりました。