Sendgrid-nodejs: يؤدي إرسال نموذج المعاملات إلى تجاهل الموضوع المحدد عبر كائن البيانات

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

ملخص القضية

عند استخدام وظيفة sendgridMail.send لإرسال نموذج معاملات ، تتم إضافة أي سطر موضوع إلى الكائن data الذي يتم تمريره sendgridMail.send (عبر data.subject أو data.personalizations[someIndex].subject ) ويتم استخدام سطر الموضوع المحدد في نموذج المعاملات الفعلي نفسه.

السلوك الذي أتوقعه هو أن الحقول المحددة في الكائن data ستتجاوز أي حقول قالب موجودة ، ولكن لا يبدو أن هذا هو الحال. بالنظر إلى وثائق v3 Mail Send API ، يوضح وصف الحقل template_id يلي:

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

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

مثال

  • لقد أنشأت نموذجًا للمعاملات بالموضوع "موضوع بريدي الإلكتروني"
  • حاولت إرسال بريد إلكتروني باستخدام sendgridMail.send حيث حددت data.subject ليكون "[اختبار] موضوع بريدي الإلكتروني"
  • عنوان البريد الإلكتروني الذي تلقيته يحتوي على سطر الموضوع "موضوع بريدي الإلكتروني"

خطوات التكاثر

  1. أنشئ نموذجًا للمعاملات على https://sendgrid.com يحتوي على موضوع محدد
  2. استخدم الدالة sendgridMail.send لإرسال النموذج. تأكد أيضًا من تحديد إما data.subject أو data.personalizations[someIndex].subject .
  3. تأكد من استلام البريد الإلكتروني مع سطر الموضوع الأصلي ، وليس العنوان الذي تم تمريره إلى واجهة برمجة التطبيقات

تفاصيل تقنية:

  • Sendgrid-nodejs الإصدار: 6.3.1
  • إصدار Node.js: v8.11.3
non-library issue

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

دوه! لقد اكتشفت المكان الذي يجب تعيين {{subject}} فيه. في حالة تعرض أي شخص آخر لهذه المشكلة ، انتقل لتعديل النموذج الخاص بك ، ثم انقر فوق "الإعدادات" على اليسار. ستكون هناك مساحة لإدخال موضوعك. أدخل {{الموضوع}} هنا.

ال 19 كومينتر

مرحبًا @ 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

الأقواس الثلاثية ما زالت تعمل ، هل مازال هذا هو الحل الرسمي؟
شكرا!

image

tcukanoot نعم.

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

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

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

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

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

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

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