ΠΠΎΡΠ»Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΈΡΡΠΌΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ SendGrid. ΠΡΠ²Π΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΎΡ API SendGrid Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ JSON Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΎΠΉ (sendgrid-nodejs).
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 ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΡΠ½ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ POST V3 Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° API, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°Ρ .
ΠΡΠΈΠ²Π΅Ρ @iamgollum ,
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ Π½Π°ΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅! Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΡΡΠΎ Π² Π½Π°Ρ ΠΆΡΡΠ½Π°Π» Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
ΠΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ: https://github.com/sendgrid/sendgrid-nodejs/blob/master/USE_CASES.md#transactional_templates
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
@iamgollum ,
Π£ Π²Π°Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°?
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. Π Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π±Π»ΠΎΠ½ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ Π² ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Π°ΠΌΠΈ ΡΡΡΠ»ΠΊΠ΅.
Π₯ΠΌ, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΡΠ·Π°Π½Π°: https://github.com/sendgrid/sendgrid-nodejs/issues/347
Π― ΡΠ΅ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡ ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅.
@adamsingle ,
ΠΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ? Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
@thinkingserious Π― ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΠΊΠΎΠ΄Π° Π² ΡΡΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅. Π― Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡ ΠΊ sendgrid ΡΠ΅ΠΉΡΠ°Ρ Π½Π° ΡΠ°Π±ΠΎΡΠ΅ ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ΅ΡΡ. ΠΡΠΎΡΡ ΠΏΡΠΎΡΠ΅Π½ΠΈΡ Π·Π° ΡΠΎ, ΡΡΠΎ ΡΠΏΠ°Π» Ρ Π»ΠΈΡΠ° Π·Π΅ΠΌΠ»ΠΈ
ΠΠ°! ΠΠΎΠ»ΡΡΠΈΠ» ΡΡΡ ΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΡΠΎΠ². ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΠΏΡΡΡ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΊ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌΡ ΡΠ»Π΅ΡΡ.
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()
});
ΠΠ΅ΡΠ²ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π° Π²ΡΠΎΡΠΎΠΉ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΠ°Π·Π±ΠΎΡΠ° json :(
ΠΡ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π±ΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ sendgrid, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ°Π»ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ api ΠΈ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠ° Π΄Π΅ΡΠ°Π»Ρ Ρ ΠΎΡΠΎΡΠΎ Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π°, ΠΈ Ρ Π΅Π΅ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»? ΠΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡ ΠΊΠΎΡΠΎΠΉ ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π΅Π΅ ΠΎΠΏΡΡΡΠΈΠΌ.
@bradseefeld ,
ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Ρ ΡΡΠΈΠΌ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ :(
ΠΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π°Π΄ Π»ΡΡΡΠΈΠΌ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΡΠΎΠ΅Ρ ΠΎΡ Π²Π°Ρ Π²ΡΠ΅ ΡΡΠΈ Π΄Π΅ΡΠ°Π»ΠΈ. ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π°Π±ΠΎΡΠΈΡΡΡΡ Π½ΠΈ ΠΎ ΠΊΠ°ΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ .
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π·Π΄Π΅ΡΡ: https://github.com/sendgrid/sendgrid-nodejs/projects
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
ΠΠ΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ°ΠΌ ΠΎΡΠ΅Π½Ρ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ!
ΠΠΎΠ²ΡΠΉ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π·Π΄Π΅ΡΡ: https://github.com/sendgrid/sendgrid-nodejs/pull/378
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ°! ΠΠΎΠ»ΡΡΠΈΠ» ΡΡΡ ΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΡΠΎΠ². ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΠΏΡΡΡ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΊ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌΡ ΡΠ»Π΅ΡΡ.
ΠΏΡΠΎΡΠΈΠ²
ΠΠ΅ΡΠ²ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π° Π²ΡΠΎΡΠΎΠΉ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΠ°Π·Π±ΠΎΡΠ° json :(
ΠΡ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π±ΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ sendgrid, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ°Π»ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ api ΠΈ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠ° Π΄Π΅ΡΠ°Π»Ρ Ρ ΠΎΡΠΎΡΠΎ Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π°, ΠΈ Ρ Π΅Π΅ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»? ΠΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡ ΠΊΠΎΡΠΎΠΉ ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π΅Π΅ ΠΎΠΏΡΡΡΠΈΠΌ.