عند استخدام وظيفة sendgridMail.send
لإرسال نموذج معاملات ، تتم إضافة أي سطر موضوع إلى الكائن data
الذي يتم تمريره sendgridMail.send
(عبر data.subject
أو data.personalizations[someIndex].subject
) ويتم استخدام سطر الموضوع المحدد في نموذج المعاملات الفعلي نفسه.
السلوك الذي أتوقعه هو أن الحقول المحددة في الكائن data
ستتجاوز أي حقول قالب موجودة ، ولكن لا يبدو أن هذا هو الحال. بالنظر إلى وثائق v3 Mail Send API ، يوضح وصف الحقل template_id
يلي:
معرّف النموذج الذي ترغب في استخدامه. إذا كنت تستخدم نموذجًا يحتوي على موضوع ومحتوى (إما نص أو html) ، فلن تحتاج إلى تحديد تلك على مستوى التخصيصات ولا على مستوى الرسالة.
بالنسبة لي، "أنت لا تحتاج إلى تحديد تلك التي في التخصيصات ولا مستوى الرسالة" يعني أنه يمكنك تجاوز هذا الموضوع القالب. إذا لم يكن الأمر كذلك ، فيجب تغيير الوصف إلى " لا يمكنك تحديد تلك على مستوى التخصيصات ولا على مستوى الرسالة".
sendgridMail.send
حيث حددت data.subject
ليكون "[اختبار] موضوع بريدي الإلكتروني"sendgridMail.send
لإرسال النموذج. تأكد أيضًا من تحديد إما data.subject
أو data.personalizations[someIndex].subject
.مرحبًا @ 10kc-zack ،
أعتقد في نموذج المعاملة أنك ستعين الموضوع ليكون {{subject}} ، ثم في الكود الخاص بك ، قمت بتعيين data.subject
ليكون "[TEST] My Email Subject"
.
هل هذا مناسب لك؟
مع أطيب التحيات،
إلمر
شكرا على الرد thinkingserious واقتراحكم !
في حين أن هذا ينجز المهمة (وهو الحل البديل الذي نستخدمه حاليًا) ، فإنني أفضل كثيرًا أن أكون قادرًا على تعيين الموضوع كجزء من جسم استدعاء API الخاص بنا. هل أنت قادر على تأكيد أنه في الواقع يتم تجاهل الموضوع المقدم لواجهة برمجة التطبيقات وأن هذه المعلومات مفقودة من وثائق واجهة برمجة التطبيقات؟
مرحبًا @ 10kc-zack ،
أعتقد في نموذج المعاملة أنك ستعين الموضوع ليكون {{subject}} ، ثم في الكود الخاص بك ، قمت بتعيين
data.subject
ليكون"[TEST] My Email Subject"
.هل هذا مناسب لك؟
مع أطيب التحيات،
إلمر
كما ذكر @ 10kc-zack أن هذا الحل يعمل ولكنني لاحظت أيضًا أن القالب يقوم بتحويل بعض الأحرف مثل '
apostrophy .. أي "Someone's" إلى كيانات html. يصل بريدي الإلكتروني بالموضوع Someone's
أواجه مشكلة في تعيين سطر الموضوع باستخدام طرق حزمة SendMail Nuget. هذا هو الكود الخاص بي ، الذي حاولت تحديثه باستخدام المعلومات أعلاه:
public async Task SendAsyncTemplate(string FromAddress, string FromName, string ToAddress, string ToName, string Subject, string LinkText, string LinkUrl)
{
_logger.LogInformation($"Sending mail to: {ToAddress}, with subject: {Subject}");
var apiKey = _sendGridOptions.SendGridAPI;
var client = new SendGridClient(apiKey);
var from = new EmailAddress(FromAddress, FromName);
var to = new EmailAddress(ToAddress, ToName);
var msg = new SendGridMessage();
var templateData = new ExampleTemplateData
{
Subject = Subject,
Name = ToName,
LinkText = LinkText,
LinkUrl = LinkUrl
};
msg.Subject = "{{subject}}";
msg.SetFrom(from);
msg.AddTo(to);
msg.AddCc(from);
msg.SetTemplateId("supersecret");
msg.SetTemplateData(templateData);
var response = await client.SendEmailAsync(msg);
_logger.LogInformation($"SendGrid Response Status Code: {response.StatusCode}");
}
private class ExampleTemplateData
{
[JsonProperty("subject")]
public string Subject { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("linkText")]
public string LinkText { get; set; }
[JsonProperty("linkUrl")]
public string LinkUrl { get; set; }
}
لقد قمت بالتشغيل في وضع التصحيح ويتم تعيين القيم بشكل صحيح. ما أحصل عليه كسطر موضوع هو واصلة. أيه أفكار؟
دوه! لقد اكتشفت المكان الذي يجب تعيين {{subject}} فيه. في حالة تعرض أي شخص آخر لهذه المشكلة ، انتقل لتعديل النموذج الخاص بك ، ثم انقر فوق "الإعدادات" على اليسار. ستكون هناك مساحة لإدخال موضوعك. أدخل {{الموضوع}} هنا.
smschick ،
في حالتك ، ستفعل {{{ subject }}}
.
@ 10kc-zack ،
لدي طلب مفتوح لإجراء هذا التغيير في الوثائق. أفترض أنك تشير إلى هذه الوثائق ، أليس كذلك؟
مع أطيب التحيات،
إلمر
thinkingserious هذا هو بالفعل التوثيق الذي كنت أشير إليه: +1:
هل هناك أي خطط لتتمكن من تعيين الموضوع عبر واجهة برمجة التطبيقات دون استخدام dynamic_template_data
؟
@ mou01 مثال بسيط هنا لكيفية تعيين الموضوع: https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/single-email-single-recipient.md
نعم ، من المربك أنه لا يمكنك تمرير الموضوع عبر التخصيصات عند استخدام بيانات القالب الديناميكي ، يجب عليك تمريره في البيانات التي تبدو.
@ mou01 مثال بسيط هنا لكيفية تعيين الموضوع: https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/single-email-single-recipient.md
هل هذا يعمل مع القوالب الديناميكية؟
لا أعتقد ذلك ، أعتقد أن الفكرة وراء القوالب الديناميكية هي أنك تقوم بتعيين الموضوع في إعداد القالب ، ويمكنك استخدام البيانات الديناميكية في الموضوع. المفاضلة هي أنه يجب عليك تمريرها في بيانات ديناميكية إذا كنت تريد أن تكون مرنة تمامًا.
إذا كان لدى أي شخص هذه المشكلة:
انتقل إلى النموذج الخاص بك وانقر فوق "الإعدادات" مع رمز الترس ووضع هذا في حقل الموضوع {{subject}}
وأخيرًا عند إرسال الحمولة " dynamic_template_data " يجب أن يكون لها قيمة الموضوع.
"dynamic_template_data":{
"subject": "My Subject Value here"
}
إغلاق هذه المشكلة مع تغيير المستندات ليس شيئًا يمكن إصلاحه في هذا الريبو. لقد أرسلت طلبًا إلى فريق المستندات (عنوان المرجع: _تحديثات إلى mail-send template_id description_) وسأعود إلى الدائرة هنا مع أي تحديثات.
تم تحديث المستندات.
شكرا لك @ childish-sambino
الأقواس الثلاثية ما زالت تعمل ، هل مازال هذا هو الحل الرسمي؟
شكرا!
tcukanoot نعم.
التعليق الأكثر فائدة
دوه! لقد اكتشفت المكان الذي يجب تعيين {{subject}} فيه. في حالة تعرض أي شخص آخر لهذه المشكلة ، انتقل لتعديل النموذج الخاص بك ، ثم انقر فوق "الإعدادات" على اليسار. ستكون هناك مساحة لإدخال موضوعك. أدخل {{الموضوع}} هنا.