Sendgrid-nodejs: Тема не устанавливается при использовании динамических шаблонов

Созданный на 7 нояб. 2018  ·  29Комментарии  ·  Источник: sendgrid/sendgrid-nodejs

Я пытался добавить тему своего электронного письма с помощью динамических шаблонов, но это не сработало. Это уже известная ошибка? Можете ли вы предложить обходные пути для этой проблемы?

код шаблона:

<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);
question

Самый полезный комментарий

Привет @jlouie ,

Ваша предметная область выглядит примерно так в пользовательском интерфейсе?

screen shot 2019-01-24 at 1 30 06 pm

С наилучшими пожеланиями,

Элмер

Все 29 Комментарий

То же, что # 834

@ 10kc-zack Понятно. Тогда это известная проблема.

Кстати, какой обходной путь вы сделали, чтобы это исправить?

@ nyel-dev Установка темы шаблона на сайте SendGrid работает. Проблема в том, что кажется, что API 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 в режиме предварительного просмотра и установка тестовых данных действительно заменяет текст, как ожидалось.

Любая помощь будет оценена. Спасибо!

* РЕДАКТИРОВАТЬ *
Я также должен упомянуть, что замены в теле сообщения заменяются должным образом, а не в строке темы.

Привет @jlouie ,

Вот полный пример . Надеюсь, это поможет!

С наилучшими пожеланиями,

Элмер

@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>"
  }

image

Привет @jlouie ,

Вот полный пример . Надеюсь, это поможет!

С наилучшими пожеланиями,

Элмер

@thinkingserious : К сожалению, это не так. У меня все еще отсутствует строка темы в отправленном / полученном электронном письме, как и @nicholasess.

Привет @jlouie ,

Ваша предметная область выглядит примерно так в пользовательском интерфейсе?

screen shot 2019-01-24 at 1 30 06 pm

С наилучшими пожеланиями,

Элмер

Кстати, мне удалось решить эту проблему, используя Set Subject в интерфейсе шаблона Sendgrid. Спасибо @thinkingserious

Я предлагаю изменить настройки в меню, например, код, тестовые данные.
image

Место, где находятся настройки, скрыто: /

Спасибо за отзыв @nicholasess! Я передам его команде дизайнеров.

Я столкнулся с той же проблемой, и мне пришлось полагаться на этот обходной путь, но он не сработал бы, если бы не проанализировал проблемы.

Это супер нелогично, поскольку в документе говорится, что вы устанавливаете тему в вызове API (и подробно описывает, как вы можете установить ее глобально для сообщения и переопределить ее в персонализации, что, очевидно, потеряно с этим обходным путем).

Мы также теряем функцию «тема по умолчанию, установленная на странице администратора, которую можно переопределить в вызове API». Нет, при обходном пути мы всегда должны указывать тему для затронутых шаблонов.

(Если нет способа установить по умолчанию для интерполяции {{}}. Я проверю документацию для этого, то, что я нашел до сих пор, касается метода интерполяции с использованием тире, с которым я совершенно не знаком.)

@thinkingserious

Почему этот вопрос закрыт? Это не исправлено.

Я знаю, это может выглядеть странно, но ребята, убедитесь, что у вас нет открытых окон или вкладок на одном экране. Пользовательский интерфейс Sendgrid имеет автосохранение, которое может перезаписать все данные, которые вы сохранили ранее.

использовать в предметах {{subject}}

и отправить как переменную, как и другие переменные,

так это работает.

Я так долго зацикливался на этой проблеме, потому что следил за документами и думал, что сделал что-то не так. Поскольку я перехожу с устаревших шаблонов, я думал, что API останется прежним, и был удивлен, увидев, что он внезапно не работает так, как ожидалось.

Есть ли планы обновить документацию до 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

Предложение : вам, ребята, действительно стоит поработать над своими документами. Я имею в виду, что на самом деле они такие разбросанные, и кусочки устарели.

Тройные скобки все еще работают, я просто проверяю, является ли это официальным решением.

Спасибо!

image

@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 и документации v3
Тем не менее люди сообщают, что это работает для них

в чем дело? 🤔

Как это сработало для меня:

использовать в поле темы в пользовательском интерфейсе 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()))
Была ли эта страница полезной?
1 / 5 - 1 рейтинги