При использовании функции sendgridMail.send
для отправки шаблона транзакции любая строка темы, добавляемая к объекту data
который передается sendgridMail.send
(через data.subject
или data.personalizations[someIndex].subject
) отбрасывается, и используется строка темы, указанная в самом шаблоне транзакции.
Я ожидаю, что поля, указанные в объекте data
, переопределят любые существующие поля шаблона, но, похоже, это не так. Глядя на документацию по API отправки почты v3, в описании поля template_id
указано:
Идентификатор шаблона, который вы хотите использовать. Если вы используете шаблон, который содержит тему и контент (текст или html), вам не нужно указывать их на уровне персонализации или сообщения.
На мой взгляд, «вам не нужно указывать их на уровне персонализации или сообщения» означает, что вы можете переопределить тему шаблона. Если это не так, описание следует изменить на «вы не можете указать их на уровне персонализации или сообщения».
sendgridMail.send
где я указал data.subject
как «[ТЕСТ] Моя тема электронного письма»sendgridMail.send
для отправки шаблона. Также не забудьте указать data.subject
или data.personalizations[someIndex].subject
.Привет @ 10kc-zack,
Я полагаю, что в шаблоне транзакции вы должны установить тему как {{subject}}, а затем в своем коде вы установите data.subject
как "[TEST] My Email Subject"
.
Это работает для вас?
С наилучшими пожеланиями,
Элмер
Спасибо за ответ @thinkingserious и ваше предложение!
Хотя это действительно выполняет свою работу (и это обходной путь, который мы в настоящее время используем), я бы предпочел иметь возможность установить тему как часть нашего тела вызова API. Можете ли вы подтвердить, что на самом деле объект, предоставленный API, отбрасывается и что эта информация отсутствует в документации API?
Привет @ 10kc-zack,
Я полагаю, что в шаблоне транзакции вы должны установить тему как {{subject}}, а затем в своем коде вы установите
data.subject
как"[TEST] My Email Subject"
.Это работает для вас?
С наилучшими пожеланиями,
Элмер
Как заявил @ 10kc-zack, этот обходной путь действительно работает, но я также заметил, что шаблон преобразует некоторые символы, такие как '
apostrophy ... т.е. "Чужие" в 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}}. Если у кого-то еще есть эта проблема, войдите, чтобы отредактировать свой шаблон, затем нажмите «Настройки» слева. Будет место для ввода вашей темы. Введите здесь {{subject}}.
@smschick ,
В вашем случае вы бы сделали {{{ subject }}}
.
@ 10kc-zack,
У меня есть запрос на внесение изменений в документацию. Я предполагаю, что вы имеете в виду эту документацию , верно?
С наилучшими пожеланиями,
Элмер
@thinkingserious Это действительно документация, о которой я говорил: +1:
есть ли планы установить тему через API без использования 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"
}
Закрытие этой проблемы по мере изменения документации не может быть исправлено в этом репо. Я отправил запрос команде документации (заголовок ссылки: _Updates to mail-send template_id description_) и вернусь сюда с любыми обновлениями.
Документы обновлены.
Спасибо @ childish-sambino
Тройные скобки все еще работают, это все еще официальное решение?
Спасибо!
@tcukanoot Да.
Самый полезный комментарий
Дох! Я нашел, где нужно указать {{subject}}. Если у кого-то еще есть эта проблема, войдите, чтобы отредактировать свой шаблон, затем нажмите «Настройки» слева. Будет место для ввода вашей темы. Введите здесь {{subject}}.