SendGrid рдХреА рдИрдореЗрд▓ рд╕рд╣рд╛рдпрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рджред SendGrid рдХреЗ API рд╕реЗ рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдЖрд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдорд╛рдиреНрдп JSON (Sendgrid-рдиреЛрдбрдЬ) рд▓реМрдЯрд╛ рд░рд╣реА рд╣реИред
Uncaught SyntaxError: Unexpected token <
at Object.parse (native)
at node_modules/sendgrid/lib/sendgrid.js:110:42
at IncomingMessage.<anonymous> (node_modules/sendgrid/node_modules/sendgrid-rest/lib/client.js:108:9)
at endReadableNT (_stream_readable.js:921:12)
рд▓рд╛рдЗрди 110 рд╣реИ:
//Use callback
self.client.API(request, function(response) {
response.body = response.body ? JSON.parse(response.body) : response.body;
рдЙрджрд╛рд╣рд░рдг:
const BaseWelcomeEmail = (function(){
const helper = require('sendgrid').mail,
from_email = new helper.Email(testEmail),
to_email = new helper.Email(testEmail),
subject = "Welcome to Bedly",
content = new helper.Content("text/plain", "hello"),
mail = new helper.Mail(from_email, subject, to_email, content),
personalization = new helper.Personalization();
let substitution = new helper.Substitution(":firstname", "Aaron");
personalization.addSubstitution(substitution);
substitution = new helper.Substitution(":lastname", "Elk");
personalization.addSubstitution(substitution);
substitution = new helper.Substitution(":address", "96 Washington Avenue");
personalization.addSubstitution(substitution);
substitution = new helper.Substitution(":neighborhood", "Washington Heights");
personalization.addSubstitution(substitution);
substitution = new helper.Substitution(":unitNumber", "N/A");
personalization.addSubstitution(substitution);
substitution = new helper.Substitution(":roomNumber", "2J");
personalization.addSubstitution(substitution);
mail.addPersonalization(personalization);
return mail;
})();
рдЖрдк рдПрдХ рдореЛрдЪрд╛ рдкрд░реАрдХреНрд╖рдг рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдЪрд▓рд╛рдпрд╛:
describe('Test Email Template', function () {
it('test template ${TEMPLATE_ID} is active and is complete', function (done) {
BaseWelcomeEmail.setTemplateId(TEMPLATE_ID);
SendEmailImpl.sendEmail(BaseWelcomeEmail.toJSON(), done, function(error, response){
assert_OKResponse(error, response, done);
});
});
});
SendEmail рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд APIas рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп POST V3 рд╕реЗрдЯрдЕрдк рд╣реИред
рдирдорд╕реНрдХрд╛рд░ @iamgollum ,
рдПрдХ рдореБрджреНрджрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдмреИрдХрд▓реЙрдЧ рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИред
рдЗрд╕ рдмреАрдЪ, рд╢рд╛рдпрдж рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛: https://github.com/sendgrid/sendgrid-nodejs/blob/master/USE_CASES.md#transactional_templates
рдзрдиреНрдпрд╡рд╛рдж!
@ рдбрд┐рдпрд╛рдЧреБрд▓реНрд▓рдо ,
рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрднреА рднреА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ?
рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИред рдФрд░ рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд▓реЗрдирджреЗрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд╣рдореНрдо, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ: https://github.com/sendgrid/sendgrid-nodejs/issues/347
рдореИрдВ рдЗрд╕реЗ рдПрдХ рдмрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрдирд░реНрд╡рд░реНрдЧреАрдХреГрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рджреЗрдЦреВрдВрдЧрд╛ред
@adamsingle ,
рдЗрд╕ рдмреАрдЪ, рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХреЛрдб рдирдореВрдирд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдкреНрд░рдЬрдирди рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдзрдиреНрдпрд╡рд╛рдж!
@thinkingsouble рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдХреЛрдб рдирдореВрдирд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЕрдм рдХрд╛рдо рдкрд░ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рджреЗрдЦреВрдВрдЧрд╛ред рдореИрдВ рдкреГрдереНрд╡реА рдХреЗ рдЪреЗрд╣рд░реЗ рд╕реЗ рдЧрд┐рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ
рдмрд╛рд╣! рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдЯреАрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рд░рд╛рд╕реНрддрд╛ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧреНрд░рдгреА рд╕реНрд▓реИрд╢ рдХреЗ рд▓рд┐рдП рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИред
var request = sendgrid.emptyRequest({
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON()
});
рдмрдирд╛рдо
var request = sendgrid.emptyRequest({
method: 'POST',
path: 'v3/mail/send',
body: mail.toJSON()
});
рдкрд╣рд▓рд╛ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛ рдЖрдкрдХреЛ рдЬреМрди рдкрд╛рд░реНрд╕ рддреНрд░реБрдЯрд┐ рджреЗрдЧрд╛ :(
рд╣рдо рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рдЖрдкреА рдФрд░ рдЗрд╕ рд▓рд┐рдм рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рд╡рд┐рд╡рд░рдг рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рд╣реИ? рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд▓реИрд╢ рдХреЛ рдЙрдкрд╕рд░реНрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реАрд╡ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
@ рдмреАрдмреАрдбреАрд╕реАрдлреЗрд▓реНрдб ,
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдЙрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдерд╛ :(
рд╣рдо рдПрдХ рдмреЗрд╣рддрд░ рд╕рд╣рд╛рдпрдХ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЙрди рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдЖрдкрд╕реЗ рдЫрд┐рдкрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдЖрдк рдпрд╣рд╛рдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/sendgrid/sendgrid-nodejs/projects
рдзрдиреНрдпрд╡рд╛рдж!
рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред рд╣рдореЗрдВ рд╕реЗрд╡рд╛ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ!
рдирдпрд╛ рд╕рд╣рд╛рдпрдХ рдпрд╣рд╛рдВ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╣реИ: https://github.com/sendgrid/sendgrid-nodejs/pull/378
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдмрд╛рд╣! рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдЯреАрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рд░рд╛рд╕реНрддрд╛ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧреНрд░рдгреА рд╕реНрд▓реИрд╢ рдХреЗ рд▓рд┐рдП рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИред
рдмрдирд╛рдо
рдкрд╣рд▓рд╛ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛ рдЖрдкрдХреЛ рдЬреМрди рдкрд╛рд░реНрд╕ рддреНрд░реБрдЯрд┐ рджреЗрдЧрд╛ :(
рд╣рдо рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рдЖрдкреА рдФрд░ рдЗрд╕ рд▓рд┐рдм рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рд╡рд┐рд╡рд░рдг рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рд╣реИ? рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд▓реИрд╢ рдХреЛ рдЙрдкрд╕рд░реНрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реАрд╡ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред