Отправить старый шаблон sendgrid - PullRequest
0 голосов
/ 16 мая 2019

Я использую C #, 4.7.1 FW и nuget SendGrid.

Я связывался со службой поддержки SG и до сих пор не получил указаний или не выяснил, как отправить шаблон. Я попытался использовать родное MailMessage, а также SendGridMessage.

У меня указан идентификатор шаблона, и я продолжаю сталкиваться с проблемами при сбое электронной почты, и мне говорят "Замены не могут использоваться с динамическими шаблонами"

Вот последний фрагмент, который я бью головой о кирпичную стену:

var apiKey = "snip";
        var client = new SendGridClient(apiKey);
        var from = new EmailAddress("from@domain.com", "display name");
        var subject = "Sending an email template";
        var to = new EmailAddress("me@domain.com", "To Name");
        var plainTextContent = "";
        var htmlContent = ""; // I read htmlContent needs to be blank?
        var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
        Personalization p = new Personalization
        {
            Substitutions = new Dictionary<string, string>()
        };
        p.Substitutions.Add("[eventname]", "test event"); // my template has 3 subs, this is one of them
        p.Tos = new List<EmailAddress>();
        p.Tos.Add(to);
        msg.Personalizations.Add(p);
        msg.SetTemplateId("snip");
        var response = await client.SendEmailAsync(msg);
        var stringResponse = response.Body.ReadAsStringAsync();

Ответ:

{"errors": [{"message": "Подстановки нельзя использовать с динамическими шаблонами", "field": "personalizations.1.substitutiontions", "help": "http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.personalizations.substitutions"}]}

Я близок к тому, чтобы просто вернуть все это к созданию своего собственного HTML-шаблона и его сохранению в базе данных, извлекать его и заменять заполнители, такие как [имя события], значениями. Это не должно быть так сложно.

...