كنت أحاول إضافة موضوع إلى رسالتي الإلكترونية باستخدام قوالب ديناميكية ولكنها لا تعمل. هل هذا خطأ معروف بالفعل؟ هل يمكنك اقتراح أي حلول بديلة لهذه المشكلة؟
كود القالب:
<html>
<head>
<title></title>
</head>
<body>
<p> Hello <span>{{test_name}}!</span></p>
</body>
</html>
إرسال وظيفة البريد:
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(settings.sendgrid.api_key);
sgMail.setSubstitutionWrappers('{{', '}}');
const msg = {
to: '[email protected]',
from: settings.sendgrid.from,
subject: 'Test Subject',
templateId: settings.sendgrid.template_id,
dynamic_template_data: {
test_name: 'Testing Name'
},
};
sgMail.send(msg);
مثل # 834
@ 10kc-zack فهمت. إنها مشكلة معروفة إذن.
بالمناسبة ، ما الحل البديل الذي فعلته لإصلاحه؟
@ nyel-dev تعيين موضوع القالب على موقع SendGrid على الويب. تكمن المشكلة في أنه يبدو أن واجهة برمجة تطبيقات SendGrid لا تتيح لك توفير قالب عند تشغيل قالب ديناميكي.
مرحبًا @ nyel-dev ،
أعتقد في نموذج المعاملة أنك ستعين الموضوع ليكون {{subject}} ، ثم في الكود الخاص بك قمت بتعيين data.subject
ليكون "[TEST] My Email Subject"
.
هل هذا مناسب لك؟
مع أحر تحياتي،
إلمر
مرحبًا thinkingserious ، آمل أن يكون لديك رؤية إضافية.
أنا أقوم بالانتقال من نموذج قديم إلى قالب المعاملات وأواجه نفس المشكلة الآن (sendgrid-nodejs v6.3.1 ، Node: v8.11.4) حتى بعد استبدال حقل موضوع قالب المعاملات بـ {{subject}}
. لم أقم بشكل صريح بتعيين أغلفة الاستبدال عبر setSubstitutionWrappers()
وقد تراجعت للتو إلى مجموعة المقاود الافتراضية (على الرغم من أنني حاولت تعيينها أيضًا أثناء الاختبار).
لقد أكدت أنني مررت بخاصية subject
(بدون علامات اقتباس أو أحرف خاصة) كـ msg.subject
في حالة الاختبار الأولى ، msg.dynamic_template_data.subject
في حالتي الاختبارية الثانية ومع كليهما تم تعيينه لحالة الاختبار الثالثة الخاصة بي وما زالت رسائل البريد الإلكتروني الناتجة المستلمة لا يتم استبدال الموضوع بها كما أتوقع. يظهر موضوع البريد الإلكتروني "(بلا موضوع)".
اختبار القالب نفسه على موقع sendgrid في وضع المعاينة وتعيين بيانات الاختبار ، يحل محل النص كما هو متوقع.
سيكون موضع تقدير أي مساعدة. شكر!
* تعديل *
يجب أن أذكر أيضًا أنه يتم استبدال الاستبدالات في نص الرسالة كما هو متوقع ، وليس فقط في سطر الموضوع.
thinkingserious لا يظهر الموضوع في البريد الإلكتروني نفسه مع المثال
to: "[email protected]",
from: "[email protected]",
subject: "Hello world",
text: "Hello plain world!",
html: "<p>Hello HTML world!</p>",
templateId: "d-xxxx",
dynamic_template_data: {
subject: "Testing Templates & Stuff",
name: 'Some "Testing" One',
city: "<b>Denver<b>"
}
مرحبا jlouie ،
هنا مثال كامل . أتمنى أن يساعد ذلك!
مع أحر تحياتي،
إلمر
thinkingserious : لسوء الحظ ، لا. ما زلت أواجه سطر موضوع مفقودًا في البريد الإلكتروني المرسل / المستلم ، تمامًا مثلnicholasess.
مرحبا jlouie ،
هل يبدو مجال موضوعك مثل هذا في واجهة المستخدم؟
مع أحر تحياتي،
إلمر
بالمناسبة ، تمكنت من حل هذه المشكلة باستخدام Set Subject في واجهة قالب Sendgrid. شكرا thinkingserious
أقترح أن تتغير الإعدادات إلى القائمة مثل الكود ، اختبار البيانات.
مكان إخفاء الإعدادات: /
شكرا لتعليقات @ نيكولاس! سوف أنقله إلى فريق التصميم.
واجهت نفس المشكلة ، واضطررت إلى الاعتماد على هذا الحل البديل ، لكنه لم يكن لينجح بدون التدقيق في المشكلات.
هذا أمر غير بديهي للغاية ، حيث يقول المستند أنك قمت بتعيين الموضوع في استدعاء واجهة برمجة التطبيقات (وتفاصيل كيف يمكنك تعيينه عالميًا للرسالة وتجاوزه في التخصيصات ، والتي من الواضح أنها فقدت مع هذا الحل البديل).
نفقد أيضًا "الموضوع الافتراضي الذي تم تعيينه في صفحة المسؤول ، والذي يمكن تجاوزه في استدعاء واجهة برمجة التطبيقات". كلا ، من خلال الحل البديل ، يتعين علينا دائمًا تحديد موضوع للقوالب المتأثرة.
(ما لم تكن هناك طريقة لضبط الإعداد الافتراضي في {{}} الاستيفاء. سأتحقق من المستند لذلك ، ما وجدته حتى الآن يتعلق بطريقة الاستيفاء باستخدام الشرطات ، والتي لست على دراية بها تمامًا.)
تضمين التغريدة
لماذا تم إغلاق هذه القضية؟ لم يتم إصلاحه.
أعلم أنه قد يبدو غريبًا ، لكن الرجال يتأكدون من عدم فتح نوافذ أو علامات تبويب بنفس الشاشة. يحتوي Sendgrid ui على حفظ تلقائي يمكنه إعادة كتابة جميع البيانات التي قمت بحفظها من قبل.
استخدامها في الموضوعات {{subject}}
وإرسالها كمتغير مثل المتغيرات الأخرى ،
بهذه الطريقة تعمل.
لقد علقت في هذه المشكلة لفترة طويلة لأنني كنت أتابع المستندات واعتقدت أنني ارتكبت خطأً. نظرًا لأنني أقوم بالترحيل من القوالب القديمة ، فقد اعتقدت أن واجهة برمجة التطبيقات ستظل كما هي وفوجئت برؤيتها فجأة لا تعمل كما هو متوقع.
هل هناك أي خطط لتحديث الوثائق إلى v3/mail/send
لتعكس هذا التغيير بشكل صحيح؟
الطريقة الوحيدة التي تمكنت من خلالها من حل هذه المشكلة كانت باستخدام _triple-stash_:
{{{ subject }}}
وفقًا لهذه المقالة https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md
يمكن تأكيد استخدام الأقواس الثلاثية بدلاً من الأقواس المزدوجة في أعمال مجال الموضوع
كلما قمت بحفظ التجعدات الثلاثية أو أي رمز آخر في سطر الموضوع ، يعود الرمز تلقائيًا بعد بضع دقائق إلى المعيار <٪ subject٪>.
وأي شخص آخر وجود نفس المشكلة؟
وأي شخص آخر وجود نفس المشكلة؟
لقد رأيت شيئًا كهذا عندما كان لدي نافذتان مفتوحتان. يقوم SendGrid بالحفظ التلقائي ، لذلك إذا كان لديك نافذتان مفتوحتان ، فسيتم إلغاء بعضهما البعض.
الطريقة التي عملت بها بالنسبة لي:
استخدامها في حقل الموضوع في واجهة مستخدم SendGrid: {{{subject}}}
أرسل "subject": "test"
في message.dynamic_template_data
اقتراح : يجب أن تعملوا على مستنداتكم حقًا. أعني حقًا أنها مبعثرة جدًا والقطع والقطع قديمة.
الأقواس الثلاثية لا تزال تعمل ، أنا فقط أتحقق لمعرفة ما إذا كان هذا لا يزال هو الحل الرسمي.
شكر!
tcukanoot نعم.
يرجى إعادة فتح المشكلة! لا تزال المستندات غير صحيحة مما يشير إلى تعيين subject
على المستوى الأعلى من الطلب. ومع ذلك ، يجب تضمينه في dynamic_template_data
ويجب تعيين الموضوع في القالب على أنه {{subject}}
أو أي مفتاح ديناميكي آخر. هذا مفتوح من 2018 ولم يتم تقديم أي تغييرات في الوثائق منذ ذلك الحين!
تلقيت خطأ طلب 400 من الخادم عندما أحاول استخدام الاستبدالات أو dynamic_template_data
الرجاء تصحيح المستندات الخاصة بك. لا يجب أن يكون dynamic_template_date صالحًا بناءً على https://github.com/sendgrid/sendgrid-python/blob/main/use_cases/kitchen_sink.md ووثائق الإصدار 3
ومع ذلك ، يبلغ الناس أنه يعمل لصالحهم
ماذا يحدث هنا؟ 🤔
الطريقة التي عملت بها بالنسبة لي:
استخدامها في حقل الموضوع في واجهة مستخدم SendGrid:
{{{subject}}}
أرسل
"subject": "test"
فيmessage.dynamic_template_data
اقتراح : يجب أن تعملوا على مستنداتكم حقًا. أعني حقًا أنها مبعثرة جدًا والقطع والقطع قديمة.
كيف تفعل ذلك في PHP. الرجاء مشاركة الرمز!
هل المستندات غير صحيحة حاليًا في اقتراح إرسال هذا الموضوع كمعلمة مستوى أعلى إذن؟
الطريقة التي عملت بها بالنسبة لي:
استخدامها في حقل الموضوع في واجهة مستخدم SendGrid:
{{{subject}}}
أرسل
"subject": "test"
فيmessage.dynamic_template_data
اقتراح : يجب أن تعملوا على مستنداتكم حقًا. أعني حقًا أنها مبعثرة جدًا والقطع والقطع قديمة.
لقد نجح هذا بالنسبة لي! يجب أن يبدو مستندك مثل:
const msg = {
to: toEmail,
from: "email",
templateId: "tempateId",
dynamic_template_data: {
subject: "subjectHere",
},
};
sendGridEmail
.send(msg)
.then(() => console.log("email sent"))
.catch((error) => console.error(error.toString()))
التعليق الأكثر فائدة
مرحبا jlouie ،
هل يبدو مجال موضوعك مثل هذا في واجهة المستخدم؟
مع أحر تحياتي،
إلمر