بعد إرسال بريد إلكتروني نموذجي باستخدام أداة مساعد البريد الإلكتروني الخاصة بـ SendGrid. تقوم استجابة الخادم من واجهة برمجة تطبيقات 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;
})();
يمكنك حتى إنشاء اختبار mocha ، لقد قمت بتشغيل هذا من بيئة الاختبار هذه:
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 وهذا lib. ربما هذه التفاصيل موثقة جيداً وأغفلتها؟ سيكون من الجيد أن يقوم lib بوضع بادئة تلقائيًا للشرطة المائلة إذا حذفناها.
bradseefeld ،
آسف كان عليك التعامل مع ذلك :(
نحن نعمل على مساعد أفضل يخفي كل تلك التفاصيل عنك. لا يجب أن تهتم بأي من المعلمات.
يمكنك متابعة المشروع هنا: https://github.com/sendgrid/sendgrid-nodejs/projects
شكر!
لا داعى للقلق. نحن نحب الخدمة!
المساعد الجديد قيد التطوير هنا: https://github.com/sendgrid/sendgrid-nodejs/pull/378
التعليق الأكثر فائدة
باه! تم الحصول على هذه المشكلة بالضبط لبضع ساعات. تبين أن المسار حساس للشرطة المائلة البادئة.
ضد
يعمل المقتطف الأول ، بينما سيعطيك المقتطف الثاني خطأ تحليل json :(
لقد مررنا بوقت طويل بعميل sendgrid ، لكننا بدأنا للتو اللعب مع api وهذا lib. ربما هذه التفاصيل موثقة جيداً وأغفلتها؟ سيكون من الجيد أن يقوم lib بوضع بادئة تلقائيًا للشرطة المائلة إذا حذفناها.