لا تعمل البدائل عند استخدام هذه المكتبة. يعمل عند استخدام الضفيرة.
`'use strict';
var config = {
apiKey: '',
from: '',
to: '',
templateId: ''
}
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(config.apiKey);
async function sendTest() {
var newMsg = {
"from": {
"name": "Test Script",
"email": config.from
},
"personalizations": [{
"to": config.to,
"substitutions": {
"-firstName-": "Maciejs",
"%firstName%": "Maciej",
"-first_name": "Maciej",
"%first_name%": "Maciej"
}
}],
"subject": "test subject",
"content": [{
"type": "text/plain",
"value": "Hello, %firstName%!"
},
{
"type": "text/html",
"value": "<html><p>Hello, %firstName%!</html> "
}],
"template_id": config.templateId
}
await sgMail.send(newMsg);
}
sendTest();`
أرفق أيضًا لقطة شاشة للقالب في محرر SendGrid والبريد الإلكتروني الذي أحصل عليه
MaciejKrawczyk هل حاولت استخدام setSubstitutionWrapper
وحذف الأغلفة من substitutions
؟
مثال:
sgMail.setSubstitutionWrappers('-', '-');
"substitutions": {
"firstName": "Maciejs"
}
لست متأكدًا من كيفية عمل أغلفة متعددة مرة واحدة بهذه الطريقة ، لكنني تمكنت من الحصول على الغواصات تعمل مع هذا الإصدار من خلال عدم تحديد الأغلفة في سمة الاستبدال. تبدو الغواصات الخاصة بي
emailOptions.substitutions = {}
emailOptions.substitutions.CLIENT_NAME = myClientName
إنها تعمل. شكرا جزيلا!
شكرًا للمشاركة في مساعدةkmcurry!
أنا سعيد لأنك تعملMaciejKrawczyk!
يجب وضع هذا بالتأكيد في README! كلفني 2 ساعة لمعرفة ذلك!
@ لاسكوما ،
هذا ليس جيدا :(
هل يساعد هذا التوثيق ؟ إذا كان الأمر كذلك ، فهل يمكنك توجيهي إلى المكان الذي بحثت فيه لأول مرة عن المساعدة حتى أتمكن من التأكد من وجود رابط واضح هناك؟
شكر!
مع أحر تحياتي،
إلمر
thinkingserious نعم. هذا المستند ساعد كثيرا ومع ذلك ، منذ أن جئت من الموقع الرسمي ، حيث يجب أن تتضمن مفاتيح الاستبدال الغلاف ، لم أعير اهتمامًا كبيرًا لحالات الاستخدام.
مرحبًا @ Laskuma ،
عندما تقول إنك أتيت من الموقع الرسمي ، هل يمكنك إعلامي من فضلك بعنوان URL الذي تشير إليه؟ شكر!
مرحبًا thinkingserious ،
كنت أشير إلى هذه الصفحة . حتى قسم التجربة يحتوي على مفاتيح بديلة مع الأغلفة المضمنة. بعد قراءة الوثائق ، اعتقدت أن مكتبة Node كانت متوافقة بشكل طبيعي مع الوثائق.
LASkuma شكرا!
هذه ردود فعل مفيدة حقًا.
لست متأكدًا تمامًا من الحل. هذه المستندات مخصصة لأولئك الذين يرغبون في التفاعل مع API الخاص بنا مباشرةً مقابل استخدام إحدى مكتباتنا المساعدة.
ذكرت سابقًا أنه يجب علينا تضمين هذه الوثائق في README. هل تقصد هنا هل يجب علينا تحديد حالة استخدام الاستبدال هناك؟
شكرا مرة أخرى لمساعدتكم!
مع أحر تحياتي،
إلمر
يجب أن يكون هذا بالتأكيد في الملف التمهيدي. لقد جربت كل شيء ، لقد قرأت جميع المستندات على مرجع SendGrid api ، وكل ما هو موجود على GitHub (اعتقدت) ، اتصلت بالدعم وسأقوم بصنع غلاف API الخاص بي إذا لم يكن لـ kmcurry ، أعتقد أنه سيكون أسهل بكثير وأقل إرباكًا إذا كانت المكتبة المساعدة ستعمل تمامًا مثل واجهة برمجة التطبيقات نفسها (انظر الكود الخاص بي في بداية سلسلة الرسائل).
شكرا MaciejKrawczyk ،
هذه تعليقات جيدة جدًا وقد أضفتها إلى الأعمال المتراكمة لفريقنا من أجل الغوص بشكل أعمق. سوف نقدم تحديثات على هذا الموضوع.
شكر!
مع أحر تحياتي،
إلمر
هل تم ذلك؟ لدي نفس المشكلة؛
مرحبا sriharrsha ،
هل جربت اقتراح kmcurry ؟
ليس بعد. سوف أقوم بالتحديث إذا كان يعمل أم لا قريبًا.
آسف على الرد المتأخر.
لكل شخص يائس مثلي بالأمس: في v3 API ، تحتاج إلى استخدام dynamic_template_data
بدلاً من substitutions
، لم يتم توثيق هذا في أي مكان بعد!
ثم استخدم {{var_name}}
في قالب البريد الإلكتروني و dynamic_template_data: { var_name: "var_value" }
في استدعاء API.
tkafka يا إلهي! شكرًا لهذا الرجل ، لقد كنت أسحب شعري على هذا خلال اليومين الماضيين.
tkafka شكرا جزيلا! هذا محبط للغاية! استغرقني 3 ساعات من يومي ...
هذا هو الكود بأكمله في حال كان شخص ما يبحث عن نفس الشيء:
var sendgrid = require('@sendgrid/mail');
sendgrid.setApiKey(env.sendgridApiKey);
sendgrid.setSubstitutionWrappers('{{', '}}');
var newMsg = {
"from": {
"name": "Your Company",
"email": env.businessEmail
},
"personalizations": [{
"to": order.email,
"dynamic_template_data": {"order_id": "1234", "first_name": "Max", "last_name": "Mustermann"}
}],
"subject": "test subject",
"content": [{
"type": "text/plain",
"value": "Hello, {{firstName}}!"
},
{
"type": "text/html",
"value": "<html><p>Hello, {{'firstName}}!</html> "
}],
"template_id": env.sendgridOrderConfirmationTemplateId
};
console.log("Sending confirmation email...")
return sendgrid.send(newMsg);
إن توثيق Sendgrid أمر مروع على أقل تقدير.
مرحبا بالجميع،
يرجى الاطلاع على هذه القضية للتقدم. نحن نعمل حاليًا على تحديث C # ، ثم Java ، ثم SDK هذا بعد ذلك مباشرة. شكرًا على سعة صدرك واعتذاري عن التأخير.
مع أحر تحياتي،
إلمر
هاه ، dynamic_template_data
. لقد حللت اللغز الصغير الخاص بك! :ابتسامة:
لمستخدمي الكتابة المطبوعة الآخرين - قم بإنشاء ملف mail.d.ts
:
import {MailData} from "@sendgrid/helpers/classes/mail";
// see https://github.com/sendgrid/sendgrid-nodejs/issues/638
declare module "@sendgrid/helpers/classes/mail" {
export interface MailData {
dynamic_template_data: {[key: string]: string};
}
}
شكرا لك xduseko !
التعليق الأكثر فائدة
لكل شخص يائس مثلي بالأمس: في v3 API ، تحتاج إلى استخدام
dynamic_template_data
بدلاً منsubstitutions
، لم يتم توثيق هذا في أي مكان بعد!ثم استخدم
{{var_name}}
في قالب البريد الإلكتروني وdynamic_template_data: { var_name: "var_value" }
في استدعاء API.