テンプレートと整数を含む置換を使用して電子メールを送信しようとすると、説明なしで400 BadRequestエラーが発生します。
%test%
)_Expected_-電子メールが送信されるか、問題に関する情報を含むエラーが発生します。
_Actual_-問題に関する詳細のない400の不正な要求。
SENDMAIL ERROR { statusCode: 400,
body: '{"errors":[{"message":"Bad Request","field":null,"help":null}]}',
headers:
{ server: 'nginx',
date: 'Wed, 31 Aug 2016 14:32:57 GMT',
'content-type': 'application/json',
'content-length': '63',
connection: 'close',
'x-frame-options': 'DENY' } }
コード例は次のとおりです。
var mail = new helper.Mail()
mail.setFrom( new helper.Email( '[email protected]' ) )
mail.setTemplateId( "THE_TEMPLATE_ID" )
var personalization = new helper.Personalization()
personalization.addTo( new helper.Email( '[email protected]' ) )
var sub = new helper.Substitution( `%test%`, 42 )
personalization.addSubstitution( sub )
mail.addPersonalization( personalization )
sgClient.API( sgClient.emptyRequest( {
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON()
} ) ).catch( function( err ) {
console.error( 'SENDGRID ERROR', err.response )
} )
置換のための42
代わりに'42'
を除いて、まったく同じコードが機能します。
SendGrid自体がこのようにエラーにならない(または、どのフィールドであるか、数値であるために受け入れられなかったなど、エラーメッセージで問題を説明する)のは非常に素晴らしいことですが、sendgrid-nodeは簡単にできる/すべきだと思いますtoString()-ing置換だけで処理します。
PRを提出してよかったのですが、失敗したテストを書きに行ったとき、テストの実行方法に関するドキュメントはありませんでした。テストでは、実行しなかったテストホストに関する多くの情報を確認しました。
こんにちは@rfunduk 、
詳細なフィードバックをありがとう!
これは既知の問題であり、APIチームは、適切なエラー文字列を提供するためにバックログを修正しています。
あなたは正しいです、私たちはこれをライブラリで修正する必要があります、そして私たちはあなたのプルリクエストを歓迎します。
テストがどのように機能するかをご案内させていただきます。 ただし、最初に、署名されたCLAが必要になります: https :
ありがとう!
同じ問題が発生しました。 これを修正するにはどうすればよいですか
ありがとう
@wizysanjayは、ライブラリに渡す前に、置換toString
を呼び出します。 たとえば、次の代わりに:
personalization.addSubstitution( new helper.Substitution( `%number%`, number ) )
これを行う:
personalization.addSubstitution( new helper.Substitution( `%number%`, number.toString() ) )
+1
わかった。 ありがとう
これに出くわす前に、午後のデバッグに費やしたなんて信じられません。 少なくともドキュメントでのsubstitution must be string
言及は素晴らしいでしょう…私は自分で追加しますが、現時点では、それがドキュメントのどこに行くのかさえわかりません。
素晴らしい、優先順位が上がってよかった。 それが簡単な修正であり、あなたが私を正しい方向(レポまたはファイル)に向けることができれば、私はそれを世話することができます。
@dangerismycat 、
驚くばかり! 修正はおそらくここに行き
@thinkingseriousうーん…ビルドが失敗したようです。 更新する必要のある関連テスト、または他に何かありますか?
SendGrid組織に属していない人のためのTravisCIビルドで何かがおかしいです。 何が起こっているのかよくわかりませんが、ローカルで確認します。
ねえ、まだ「@ sendgrid / client」でこの問題が発生してい
subが整数のときにこれを送信しても機能せず、
body: {
personalizations: [{
to: [{
email: userEmail
}],
subject: `blah blah blah`,
substitutions: {
'{{sub}}': sub
}
}],
from: {
email: '[email protected]',
name: 'blah blah'
},
template_id
}
err { Error: Bad Request
at Request.http [as _callback] (node_modules/@sendgrid/client/src/classes/client.js:124:25)
at Request.self.callback (node_modules/request/request.js:186:22)
at emitTwo (events.js:126:13)
at Request.emit (events.js:214:7)
at Request.<anonymous> (node_modules/request/request.js:1163:10)
at emitOne (events.js:116:13)
at Request.emit (events.js:211:7)
at IncomingMessage.<anonymous> (node_modules/request/request.js:1085:12)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:111:20)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1055:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
code: 400,
message: 'Bad Request',
response:
{ headers:
{ server: 'nginx',
date: 'Fri, 20 Apr 2018 16:17:42 GMT',
'content-type': 'application/json',
'content-length': '63',
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' },
body: { errors: [Array] } } }
where the errors: array is [ { message: 'Bad Request', field: null, help: null } ]
ただし、リクエストのsubを${sub}
、機能します
よろしく
こんにちは@Mauyeung 、
新しい号を開いていただけませんか。 ありがとう!
これはバグかもしれ好きなようにそれは、見えます私が見る私たちはボンネットの下にあなたのための文字列にそれを変換することになっていること。
敬具、
エルマー
最も参考になるコメント
@wizysanjayは、ライブラリに渡す前に、置換
toString
を呼び出します。 たとえば、次の代わりに:これを行う: