Sendgrid-nodejs: Тема не меняется в шаблоне mail.send ()

Созданный на 1 авг. 2018  ·  26Комментарии  ·  Источник: sendgrid/sendgrid-nodejs

Резюме проблемы

тема письма не меняется

Действия по воспроизведению

вызовите sgMail.send (см. ниже)

const seeBellow = {
  "from": "[email protected]",
  "templateId": "d-1da76d64a1bd4c8b87c035ccaa3f6cfb",
  "dynamicTemplateData": {
    "username": "[email protected]",
    "giftcardAmount": "$45",
    "validUntil": "Aug 2019",
    "receiptNumber": 111299,
    "ewayTransactionId": "00003100003509951fac7d25e8dd96e0"
  },
  "personalizations": [
    {
      "to": "[email protected]",
      "subject": "Somebody has sent you a Gift Card"
    }
  ],
  "isMultiple": false,
  "substitutionWrappers": [
    "{{",
    "}}"
  ]
}

что приводит к следующему сообщению

{
  "method": "POST",
  "url": "/v3/mail/send",
  "body": {
    "from": {
      "email": "[email protected]"
    },
    "personalizations": [
      {
        "to": [
          {
            "email": "[email protected]"
          }
        ],
        "subject": "Somebody has sent you a Gift Card",
        "dynamic_template_data": {
          "username": "[email protected]",
          "giftcardAmount": "$45",
          "validUntil": "Aug 2019",
          "receiptNumber": 111299,
          "ewayTransactionId": "00003100003509951fac7d25e8dd96e0"
        }
      }
    ],
    "template_id": "d-1da76d64a1bd4c8b87c035ccaa3f6cfb"
  }
}

Я также пробовал отправить 2 письма через массив сообщений вместо использования персонализации, но это тоже не работает.

Наконец, я также попытался разместить тему рядом с полем from, все еще не сработало

Технические подробности:

  • Версия sendgrid в файле блокировки:
    "@sendgrid/mail": {
      "version": "6.3.1",
      "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-6.3.1.tgz",
      "integrity": "sha512-5zIeAV9iU+0hQkrOQ/D4RB2MfpK+lNbOortIfQdCh95aMDF/TRc9WB8FGNhmQrx9YMuJTms5eiBklF0Fi/dbVg==",
      "requires": {
        "@sendgrid/client": "6.3.0",
        "@sendgrid/helpers": "6.3.0"
      }
    },
  • Node.js Версия: 8.11.1
unknown or a hacktoberfest help wanted bug

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

Должно получиться так:
"dynamic_template_data": {
"subject": "ваша тема",
},

перейти на https://sendgrid.com/dynamic_templates
и добавьте {{{subject}}} в НАСТРОЙКИ ШАБЛОНА.

У меня работает: +1:

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

Обходной путь, который я использую, - это добавить тему в веб-интерфейс SendGrid, например {{subject}}, а затем передать переменную темы в dynamic_template_data . Кажется, что переменные шаблона работают в предметах, поэтому вы можете просто программно передать весь предмет таким образом.

Привет @falconmick ,

Обходной путь

@ wbw20 ,

Спасибо за помощь! Я отредактировал ваше изображение, потому что оно не помогло решить проблему. Не уверен, каковы были ваши намерения.

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

Элмер

FWIW, я вижу подобное поведение с библиотекой Ruby.

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

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

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

Должно получиться так:
"dynamic_template_data": {
"subject": "ваша тема",
},

перейти на https://sendgrid.com/dynamic_templates
и добавьте {{{subject}}} в НАСТРОЙКИ ШАБЛОНА.

У меня работает: +1:

Решение @atarabbi должно быть тем, что вам нужно. Продолжайте комментировать эту ветку, если у вас все еще возникают проблемы. Спасибо!

Решение @atarabbi должно быть тем, что вам нужно. Продолжайте комментировать эту ветку, если у вас все еще возникают проблемы. Спасибо!

Но разве это не приводит к тому, что все в конечном итоге перестает работать в соответствии с тем, как API библиотеки документирован для использования нами? Установка темы так, как позволяют вещи, все равно кажется неуместной, нет?

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

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

Из того, что я вижу в документации здесь , задокументировано обновление темы шаблона с помощью переменной handlebars (конечно, это могло бы быть более обширным объяснением). @baugarten Просто чтобы убедиться, вы говорите, что это вам не подходит? Можете ли вы указать, где мы указываем вам неправильное направление?

Я вижу, что мы не документируем dynamic_template_data в клиентском пакете .

Кроме того, вы используете последнюю версию библиотеки v6.3.1?

Определенно хочу это исправить и извиняюсь за недоразумение!

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

Ух, в документации прямо говорится, что базовая тема будет перезаписана субъектом персонализации, что совсем не то же самое, что возможность шаблонизировать тему.

РЕДАКТИРОВАТЬ: особенно, когда ваши собственные библиотеки не работают. Они добавляют тему в персонализацию, где ее нельзя использовать в шаблоне. Если вы ожидаете, что это будет задокументированное поведение, то библиотеки должны добавить его к подобъекту dynamic_template_data.

Также столкнулся с этим, тема, похоже, не перезаписана, но можно обойтись.

Оставить тему в «dynamic_template_data» и сослаться на нее в шаблоне с помощью {{{subject}}} действительно работает. Также я заметил, что custom_args больше не существует. Он объединяется вместе с заменами в dynamic_template_data. К сожалению, в документации об этом не говорится. Если вы хотите, например, передать параметр языка, сделайте это также в своем 'dynamic_template_data'.

Поле «dynamic_template_data» работает, но кажется недокументированным: https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html

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

Обходной путь не работает надежно. Если я отправлю ~ 30 писем в цикле, используя одну и ту же тему, я получу некоторые с темой, которую я отправил, а некоторые с (без темы).

Есть ли в настоящее время способ надежно отправлять настраиваемые темы через API?

@ deepai-org. Лучше всего использовать последние версии документации здесь: https://sendgrid.com/docs/API_Reference/api_v3.html

@vladkosarev Вы говорите, что используете один и тот же динамический шаблон с шаблоном темы с помощью ручек (см. https://github.com/sendgrid/sendgrid-nodejs/issues/713#issuecomment-443206995), а полезная нагрузка вашего запроса содержит правильную данные динамического шаблона для предмета, и он ненадежно использует предмет? Если это так, лучше всего обратиться в службу поддержки, поскольку это не то, что может / должно быть решено библиотекой на стороне клиента.

@ childish-sambino Через некоторое время тема всех писем стала правильной. Кажется, что какое-то время происходит что-то асинхронное, и некоторые электронные письма получат старый шаблон электронной почты, а некоторые новые.

Правильная ли это https://sendgrid.com/docs/API_Reference/api_v3.html документация? Я почти уверен, что отправка темы, как описано в этом документе, не сработает. Единственный способ, который пока работал, - это обходной путь, описанный в этой заявке.

@vladkosarev Это правильные документы. Если вы используете динамические шаблоны, тема должна быть шаблонизирована и передана как данные динамического шаблона, чтобы изменить ее для каждого электронного письма, как описано в этом выпуске. Если вы не используете шаблоны, будет использоваться тема, указанная в полезных данных почтового отправления.

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

@ childish-sambino Не могли бы вы указать мне, где в документации объясняется, как использовать тему в динамическом шаблоне? Я до сих пор не могу найти это в новой ссылке. Спасибо!

если я правильно помню @vladkosarev , вы хотите установить значение руля в самом шаблоне для темы - это делается с помощью графического интерфейса шаблона. Затем просто укажите это значение в своем коде.

image

@aroach спасибо, но мне интересно увидеть это в документе, а не в комментарии к github. Кстати, {{}} у меня не сработало, когда я попробовал, работали только тройные скобки {{{}}} (может быть та же проблема с асинхронностью, что и раньше).

@vladkosarev Здесь, кажется, упоминается: https://sendgrid.com/docs/ui/sending-email/how-to-send-an-email-with-dynamic-transactional-templates/

Этот шаблон Handlebars можно использовать в строках текста, html и темы вашего шаблона.

@aroach спасибо. Я просто провел больше тестов, и предмету требуется некоторое время, чтобы на самом деле «применить» к шаблону, поэтому похоже, что он не работает, если вы тестируете (редактировать шаблон / отправлять). Если вы подождете 10 минут, он действительно будет применен и работает по назначению. Я мог бы связаться с SG, чтобы документально подтвердил, что обновления шаблонов не происходят в реальном времени (по крайней мере, для темы) и что вам нужно немного подождать, чтобы провести тест. Спасибо.

@Whatthefoxsays должен иметь возможность преследовать это и / или вносить соответствующие изменения. 👋

@aroach , наверное, я должен упомянуть, что у нас есть два IP-адреса для отправки электронной почты. Я не знаю, как работает SG изнутри, но, возможно, именно поэтому возникла проблема (требуется время для распространения на второй узел?).

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

wooyah picture wooyah  ·  4Комментарии

thidasapankaja picture thidasapankaja  ·  4Комментарии

Chrischuck picture Chrischuck  ·  3Комментарии

polkhovsky picture polkhovsky  ·  3Комментарии

Loriot-n picture Loriot-n  ·  4Комментарии