Я определил переменную <%datetime%>
в моем шаблоне SendGrid. Я решил этим соглашением об именах следовать за уже размещенным <%subject%>
строки темы. В примерах я вижу различные соглашения об именах переменных: https://github.com/sendgrid/sendgrid-csharp/blob/master/SendGrid/Example/Example.cs#L41 использует -name-
и -city-
, а https://github.com/sendgrid/sendgrid-csharp/blob/master/SendGrid/Example/Example.cs#L157 использует %name%
и %city%
.Как заменить переменные шаблона Sendgrid? (в C#)
Я просто предполагаю, что подстановка переменных основана на простом сопоставлении шаблонов, поэтому шаблоны-контрагенты этих примеров содержат одинаковые точные строки. Это не работает для меня до сих пор, хотя по какой-то причине.
string sendGridApiKey = ConfigurationManager.AppSettings["SendGridApiKey"].ToString();
var sendGrid = new SendGridAPIClient(sendGridApiKey);
string emailFrom = ConfigurationManager.AppSettings["EmailFrom"].ToString();
Email from = new Email(emailFrom);
string subject = "Supposed to be replaced. Can I get rid of this somehow then?";
string emaiTo = ConfigurationManager.AppSettings["EmailTo"].ToString();
Email to = new Email(emaiTo);
Content content = new Content("text/html", "Supposed to be replaced by the template. Can I get rid of this somehow then?");
Mail mail = new Mail(from, subject, to, content);
mail.TemplateId = "AC6A01BB-CFDF-45A7-BA53-8ECC54FD89DD";
mail.Personalization[0].AddSubstitution("<%subject%>", $"Your Report on {shortDateTimeStr}");
mail.Personalization[0].AddSubstitution("<%datetime%>", longDateTimeStr);
// Some code adds several attachments here
var response = await sendGrid.client.mail.send.post(requestBody: mail.Get());
запрос принят и обработан, но по электронной почте я получаю до сих пор имеют сюжетную линию
«должен быть заменен. Могу ли я избавиться от этого как-нибудь потом?»
Тело заменяется необработанным содержимым шаблона, но переменная также не заменяется. Что я делаю не так?