Sendgrid-nodejs: لا تعمل استبدالات Sendgrid v3 Nodejs في القوالب

تم إنشاؤها على ١٨ أبريل ٢٠١٨  ·  15تعليقات  ·  مصدر: sendgrid/sendgrid-nodejs

مرحبا،

في حزمة sendgrid nodejs npm ، واجهت مشكلة. أنا قادر على إرسال رسائل بريد إلكتروني مع الاستبدالات والقالب ولكن المشكلة في البريد الإلكتروني عند العميل نهاية٪ name٪ ،٪ company٪ إلخ. لا يتم استبدال البدائل بالقيمة.

مقتطف الشفرة
const sgMail = تتطلب ('@ sendgrid / mail') ،
sgMail.setApiKey (sendgrid_key) ،
var msg =
{
"التخصيصات": [{
"إلى": [{
"البريد الإلكتروني": " [email protected] " ،
"الاسم": "بعض الشركات"
}] ،
"الاستبدالات": {
"٪ name٪": "جون" ،
"٪ company٪": "بعض الشركات" ،
"٪ business٪": "Faster Pheny"
} ،
"الموضوع": "فاتورة لبعض الشركات!"
}] ،
"من عند": {
"البريد الإلكتروني": "CompanyA [email protected] " ،
"الاسم": "الشركة أ"
} ،
"الرد على": {
"البريد الإلكتروني": " [email protected] " ،
"الاسم": "خدمة العملاء"
} ،
"الموضوع": "فاتورة لبعض الشركات!" ،
"template_id": "93f052da-08d4-46f2-8f0c-f2a193bceea0"
} ؛

sgMail
.send (msg)
ثم (() => {
console.log ('SendGrid :: Response بعد إرسال البريد الإلكتروني بنجاح!') ؛
})
. صيد (خطأ => {
console.error ('Error SendGrid :::' + error.toString ()) ؛
}) ؛

يتم تنفيذ الكود واستلام البريد الإلكتروني بدون بدائل لـ٪ name٪،٪ business٪،٪ company٪


الآن حاولت استخدام موقع sengrid https://sendgrid.com/docs/API_Reference/api_v3.html
يرسل البريد الإلكتروني بشكل مثالي دون أي مشاكل ويتم إجراء جميع الاستبدالات بشكل صحيح.

ما الخطأ في كود جافا سكريبت npm الذي أستخدمه لتعيين القيم في sgMail.send (msg)؟

اطلب مساعدتك.

question

التعليق الأكثر فائدة

يتطلب Sendgrid v3 استبدال الاستبدالات بـ dynamic_template_data شيء مثل هذا:

const msg = {
    to: email,
    from: '[email protected]',
    subject: 'Sample Email Subject',
    templateId: 'your_template_id_here,
    substitutionWrappers: ['{{', '}}'],
    dynamic_template_data: {
      "data_item": "value" 
    }
   };

ال 15 كومينتر

يبدو أنك فقدت أغلفة الاستبدال. لقد استخدمت للتو المثال الذي استخدموه في حالة الاستخدام هذه مع قالب بسيط ، وهو يعمل.

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
sgMail.setSubstitutionWrappers('{{', '}}'); // Configure the substitution tag wrappers globally
const msg = {
  to: '[email protected]',
  from: '[email protected]',
  subject: 'Hello world',
  text: 'Notification',
  html: '<p></p>',
  templateId: 'your-id-goes-here',
  substitutions: {
    name: 'John'
  },

};
sgMail.send(msg);

يتكون القالب الخاص بي من مقتطف الشفرة هذا فقط:

<%body%> {{name}}

على ما يبدو ، الجزء <%body%> إلزامي.

ربما يمكنك محاولة تعيين أغلفةك على شيء مثل {{ أو }} أو أي شيء آخر (أو % أو % في حالتك) ، لاحظ أيضًا أن المثال لا يتضمن الأغلفة في كائن الاستبدال ، فقط اسم الاستبدال.

جرب شيئًا مثل هذا:

"substitutions": {
  name: "John",
  company: "Some Company",
  business: "Faster Pheny"
},

رائع. انها عملت. شكرا جزيلا. غلاف الاستبدال هو ما كان مفقودًا.

شكرا على الإجابة الكاملة. ترميز سعيد!

adamreisnz ،

ربما يجب علينا استدعاء sgMail.setSubstitutionWrappers('{{', '}}'); افتراضيًا لتجنب هذا النوع من المشكلات في المستقبل. ماذا تعتقد؟

adamreisnz ،

ربما نحاول الكشف عن بعض الأغلفة الشائعة ، مثل٪ أو _؟

سوف يكون هذا رائعا. عندما يقوم المستخدم من خلال بوابة Sendgrid بإنشاء / تصميم القالب ، تقوم البوابة الإلكترونية افتراضيًا بإدراج الاستبدال٪ body٪ و٪ name٪. لذلك من الطبيعي أن يفكر المستخدم في عدم تغيير الحرف٪ وسيستمر في النموذج لأنه لا يدرك تمامًا الوظيفة. إذا كان بإمكان Sendgrid اقتراح إمكانية تغيير٪ إلى أي حرف أو كانت الميزة تفضل {{}} ، فسيستخدمها المستخدم أو أن القالب الذي يقوم بتحميل الإعدادات الافتراضية يستبدل٪ بـ {{في المقام الأول. سيتجنب المشكلة التي واجهتها.

لست حريصًا على الاكتشاف التلقائي ، إلا إذا كانت خوارزمية قوية جدًا. تكمن مشكلة محاولة جعل العملية ذكية للغاية في أنها قد تؤدي إلى صعوبة تصحيح الأخطاء. ماذا لو استخدم شخص ما _ للتأكيد؟ على سبيل المثال ، تم التأكيد عليه بالفعل هذا لا يعني أن الرمز _ هو غلاف الاستبدال. نفس الشيء مع % ، يمكنك استخدامه للنسب المئوية وقد يخدع الخوارزمية للاعتقاد بأنك تستخدمها كغلاف بديل حيث لا تكون كذلك.

نظرًا لأن Sendgrid ينتقل إلى قوالب المقاود ، والتي تستخدم {{ و }} كأغلفة بديلة ، أعتقد أن هذا يعد افتراضيًا معقولاً. هناك سبب لاستخدام هذه الأحرف كأغلفة بديلة في لغات مثل المقاود ، لأنها ليست شائعة جدًا في اللغة العادية. تعتبر الشرطة السفلية والنسبة المئوية أكثر شيوعًا وبالتالي فهي عرضة لسوء التفسير.

أعتقد أنها مجرد مسألة توثيق هذا جيدًا لتوضيحه. مع خيار تحديد الغلاف الخاص بك ، يجب أن يكون لدى المستخدم كل ما يحتاجه لجعله يعمل.

إذا كان لدى أي شخص فكرة عن الاكتشاف التلقائي القوي ، فأنا أحب أن أرى خوارزمية زائفة يمكنها التعامل مع جميع السيناريوهات وجميع الأغلفة الممكنة جيدًا ، مع تجنب الإيجابيات الخاطئة.

أفكار؟

يوافق على. ستكون تحديثات التوثيق هي الخيار الأفضل.

موافق adamreisnzvinvantest ، يرجى الاطلاع على https://github.com/sendgrid/sendgrid-nodejs/issues/681 للتقدم.

يتطلب Sendgrid v3 استبدال الاستبدالات بـ dynamic_template_data شيء مثل هذا:

const msg = {
    to: email,
    from: '[email protected]',
    subject: 'Sample Email Subject',
    templateId: 'your_template_id_here,
    substitutionWrappers: ['{{', '}}'],
    dynamic_template_data: {
      "data_item": "value" 
    }
   };

goelmk ،

هنا مثال كامل. شكر!

مع أحر تحياتي،

إلمر

محير للغاية أن عليك استخدام dynamic_template_data
سيكون من الجيد تحديث الوثائق https://sendgrid.com/docs/API_Reference/api_v3.html

حاولت اتباع goelmk أحدث مثال. لا يعمل لي :(
تم إنشاء القالب الخاص بي باستخدام محرر WYSIWYG الخاص بك وحاولت وضع {{checkUrl}} في كل من رابط عنوان URL لمكون الزر ومكون نصي. لا يعمل.

shawnkoh هل قمت بحلها؟ لقد قمت أيضًا بإنشاء القالب باستخدام المصمم المرئي ولا يعمل الاستبدال.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

danielflippance picture danielflippance  ·  4تعليقات

thinkingserious picture thinkingserious  ·  4تعليقات

agostonbonomi picture agostonbonomi  ·  3تعليقات

nicoasp picture nicoasp  ·  3تعليقات

mikemaccana picture mikemaccana  ·  4تعليقات