ν νλ¦Ώ + μ μλ₯Ό ν¬ν¨νλ λ체λ₯Ό μ¬μ©νμ¬ μ΄λ©μΌμ 보λ΄λ €κ³ νλ©΄ μ€λͺ μμ΄ 400 μλͺ»λ μμ² μ€λ₯κ° λ°μν©λλ€.
%test%
)_ μμ _-μ΄λ©μΌμ΄ μ μ‘λμκ±°λ λ¬Έμ μ λν μ λ³΄κ° ν¬ν¨ λ μ€λ₯μ λλ€.
_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://github.com/sendgrid/sendgrid-nodejs/blob/master/CONTRIBUTING.md
κ°μ¬!
λλ κ°μ λ¬Έμ κ° μμ΅λλ€. μ΄ λ¬Έμ λ₯Ό μ΄λ»κ² ν΄κ²°ν©λκΉ?
κ°μ¬
@wizysanjay λ λΌμ΄λΈλ¬λ¦¬μ μ λ¬νκΈ° μ μ λ체 νλͺ©μ λν΄ toString
λ₯Ό νΈμΆν©λλ€. μλ₯Ό λ€λ©΄ λ€μκ³Ό κ°μ΅λλ€.
personalization.addSubstitution( new helper.Substitution( `%number%`, number ) )
μ΄ μμ μ μν:
personalization.addSubstitution( new helper.Substitution( `%number%`, number.toString() ) )
+1
μμμ΄. κ°μ¬
λλ μ΄κ²μ λ°κ²¬νκΈ° μ μ μ€νμ λλ²κΉ
μ 보λλ€λ κ²μ λ―Ώμ μ μμ΅λλ€. μ μ΄λ λ¬Έμμμ substitution must be string
λ©μ
μ΄ μμΌλ©΄ μ’μ κ²μ
λλ€. μ κ° μ§μ μΆκ°νκ³ μΆμ§λ§μ΄ μμ μμ λ¬Έμμμ μ΄λλ‘ κ°μ§μ‘°μ°¨ μ°Ύμ μ μμ΅λλ€.
μλ νμΈμ @dangerismycat ,
:(μ΄ μ€λͺ λμ΄ μμ΅λλ€. λκ°λμ§ μ¬κΈ°μ ,νμ§λ§ μ¬μ© μ¬λ‘μ λμμ΄ μλμμ.
μ°λ¦¬λ μ΄κ²μ λΌμ΄λΈλ¬λ¦¬μ κ΅¬μΆ ν κ²μ΄λ―λ‘ κ±±μ ν νμλ μμ΅λλ€. μ°μ μμλ₯Ό λμ΄κΈ° μν΄ κ·νμ ν¬νκ° μΆκ°λμμ΅λλ€.
κ΅μ₯ν©λλ€. μ°μ μμκ° λμμ Έμ κΈ°μ©λλ€. κ°λ¨ν μμ μ΄κ³ μ¬λ°λ₯Έ λ°©ν₯ (repo λλ file)μ μλ €μ€ μ μλ€λ©΄ λ΄κ° μ²λ¦¬ ν μ ββμμ΅λλ€.
@dangerismycat ,
λλ°! μμ μ¬νμ μ¬κΈ°μ μμ κ²μ λλ€.
@thinkingserious ν β¦ λΉλκ° μ€ν¨ν κ² κ°μ΅λλ€. μ λ°μ΄νΈν΄μΌ ν κ΄λ ¨ ν μ€νΈκ° μμ΅λκΉ, μλλ©΄ λ€λ₯Έ κ²μ΄ μμ΅λκΉ?
SendGrid μ‘°μ§μ μνμ§ μλ μ¬λλ€μ μν΄ Travis CI λΉλμ λκ° μλͺ»λμμ΅λλ€. λ¬΄μ¨ μΌμ΄ μΌμ΄λκ³ μλμ§ μ λͺ¨λ₯΄κ² μ§λ§ λ‘컬μμ νμΈνκ² μ΅λλ€.
"@ sendgrid / client": "^ 6.2.1"μμ μ¬μ νμ΄ λ¬Έμ κ° λ°μν©λλ€.
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 ,
μλ‘μ΄ νΈλ₯Ό μ΄μ΄ μ£Όμκ² μ΅λκΉ? κ°μ¬!
μ΄κ²μ λ²κ·Έ μΌ μ μμ΅λλ€. μ°λ¦¬κ° κ·Έκ²μ νλ μλμμ λ¬Έμμ΄λ‘ λ³νν΄μΌνλ€λ κ²μ μμμ΅λλ€ .
λ§μμ λ΄μ,
Elmer
κ°μ₯ μ μ©ν λκΈ
@wizysanjay λ λΌμ΄λΈλ¬λ¦¬μ μ λ¬νκΈ° μ μ λ체 νλͺ©μ λν΄
toString
λ₯Ό νΈμΆν©λλ€. μλ₯Ό λ€λ©΄ λ€μκ³Ό κ°μ΅λλ€.μ΄ μμ μ μν: