Как заменить переменные шаблона Sendgrid? (в node-js)

Кажется, это простой параметр, который мне не хватает, но мне сложно понять, что именно.

Это запрос, который я отправляю с помощью @ sendgrid / mail:

email.js:

const sgMail = require('@sendgrid/mail');

function emailRequest() {
    msg = {
      to: '[email protected]
      from: '[email protected]',
      subject: 'Receipt for Business Expenses',
      template_id: 'db6d11ae-41e4-4e1a-a71b-f5368eb21c9c',
      personalizations: [
        {
          to: '[email protected],
          from: '[email protected],
          subject: 'Receipt for Business Expenses,
          template_id: 'db6d11ae-41e4-4e1a-a71b-f5368eb21c9c',
          substitutions: {
            ':firstname': 'Bobba',
            ':ordernumber': 'WHAAA',
            ':orderdate': 'today',
            ':ordertime': 'NOW!',
          },
          custom_args: {
            ':firstname': 'Bobba',
            ':ordernumber': 'WHAAA',
            ':orderdate': 'today',
            ':ordertime': 'NOW!',
          },
        },
      ],
      sub: {
        ':firstname': 'Bobba',
        ':ordernumber': 'WHAAA',
        ':orderdate': 'today',
        ':ordertime': 'NOW!',
      },
      substitutions: {
        ':firstname': 'Bobba',
        ':ordernumber': 'WHAAA',
        ':orderdate': 'today',
        ':ordertime': 'NOW!',
      },
    };

  sgMail.setApiKey(process.env.SENDGRID_API_KEY);

  return sgMail
    .send(msg)
    .then(response => {
      return response;
    })
    .catch(err => {
      throw err;
    });
}

Письмо отправлено, но я все еще получаю незамещенные шаблоны:

введите здесь описание изображения

Исходный код sendgrid-nodejs mail.js, кажется, говорит, что пока есть «подстановки», он инициализирует класс рассылки этими подстановками, но не работает:

https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/helpers/classes/mail.js.

https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html

Как правильно подставлять переменные в шаблоны? Я использую неправильный пакет?


person Kyle Truong    schedule 04.11.2017    source источник
comment
Спасибо за публикацию. Я уже почти две недели пытаюсь получить ответ от их поддержки. Их документация ужасна, а поддержка не намного лучше. Спасибо за публикацию, постараюсь ответить ниже!   -  person Sean    schedule 09.11.2017
comment
Рад, что смог помочь. Документация была довольно обширной, но я смог найти там небольшой самородок после того, как покопался в проблемах Github об этих оболочках подстановки здесь: github.com/sendgrid/sendgrid-nodejs/blob/master/packages/mail/   -  person Kyle Truong    schedule 09.11.2017


Ответы (1)


Немного покопавшись, я нашел ответ в разделе проблем на их гитхабе. Мне не хватало "substitutionWrappers". Чтобы заставить его работать, все, что мне нужно было сделать, это добавить в сообщение «substitutionWrappers» вместе с «заменами»:

const msg = {
    to: '[email protected]'
    from: '[email protected]',
    subject: 'Receipt for Business Expenses',
    template_id: 'da6db3ae-41e4-4e1a-a71b-f5368ab41c9c',
    substitutionWrappers: [':', ''],
    substitutions: {
      firstname: 'Bobba',
      ordernumber: 'WHAAA',
      orderdate: 'today',
      ordertime: 'NOW!',
    },
  };
person Kyle Truong    schedule 04.11.2017
comment
Это сработало! Вы решили то, на что 4 сотрудника SendGrid за две недели еще не ответили за меня. Что я мог бы увеличить вдвое. Одно последующее: моя электронная почта не приходит в формате HTML (хотя я использую шаблон html), когда я получаю ее в Gmail. Удалось ли вам получить электронное письмо в формате HTML? - person Sean; 09.11.2017
comment
Хотел бы я помочь с HTML-материалами, но нам просто передали шаблоны, и они работали без вопросов. Определенно отформатирован и стилизован, хотя я не уверен, как они это сделали. - person Kyle Truong; 09.11.2017
comment
Не беспокойтесь, просто разобрался. В примере, который мне предоставила служба поддержки, использовался текстовый параметр в вызове sendmail. При его удалении в шаблоне использовалась ожидаемая версия HTML. Я предполагаю, что отправка альтернативного текста узурпирует шаблон. Я также только что заметил, что у конструктора шаблонов есть текстовая версия в качестве опции, поэтому я могу редактировать ее там. Спасибо за быстрый ответ! - person Sean; 09.11.2017
comment
Вот полный пример: github. com / sendgrid / sendgrid-nodejs / blob / master / packages / mail / Если у вас есть идеи о том, как мы можем лучше задокументировать это, дайте мне знать, или PR для swag принимаются;) - person Elmer Thomas; 11.11.2017