Я пытался добавить тему своего электронного письма с помощью динамических шаблонов, но это не сработало. Это уже известная ошибка? Можете ли вы предложить обходные пути для этой проблемы?
код шаблона:
<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);
То же, что # 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 в режиме предварительного просмотра и установка тестовых данных действительно заменяет текст, как ожидалось.
Любая помощь будет оценена. Спасибо!
* РЕДАКТИРОВАТЬ *
Я также должен упомянуть, что замены в теле сообщения заменяются должным образом, а не в строке темы.
@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>"
}
Привет @jlouie ,
Вот полный пример . Надеюсь, это поможет!
С наилучшими пожеланиями,
Элмер
@thinkingserious : К сожалению, это не так. У меня все еще отсутствует строка темы в отправленном / полученном электронном письме, как и @nicholasess.
Привет @jlouie ,
Ваша предметная область выглядит примерно так в пользовательском интерфейсе?
С наилучшими пожеланиями,
Элмер
Кстати, мне удалось решить эту проблему, используя Set Subject в интерфейсе шаблона Sendgrid. Спасибо @thinkingserious
Я предлагаю изменить настройки в меню, например, код, тестовые данные.
Место, где находятся настройки, скрыто: /
Спасибо за отзыв @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
Предложение : вам, ребята, действительно стоит поработать над своими документами. Я имею в виду, что на самом деле они такие разбросанные, и кусочки устарели.
Тройные скобки все еще работают, я просто проверяю, является ли это официальным решением.
Спасибо!
@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()))
Самый полезный комментарий
Привет @jlouie ,
Ваша предметная область выглядит примерно так в пользовательском интерфейсе?
С наилучшими пожеланиями,
Элмер