2

我正在尝试发送带有特定动态模板和数据的电子邮件。电子邮件已成功发送,但包含空数据。handle 方法是 Azure Function 的一部分。最近我将 Newtonsoft JSON 更改为 System.Text.Json,这可能会导致一些问题。

电子邮件: 在此处输入图像描述

SendGrid 动态模板配置: 在此处输入图像描述

C#代码:

        public async Task Handle(SendEmailCommand command)
        {
            var client = new SendGridClient(emailConfig.SendGridApiKey);
            var msg = new SendGridMessage();

            msg.SetFrom(new EmailAddress(emailConfig.Sender));
            msg.AddTo(new EmailAddress(command.To));
            msg.SetTemplateId(command.SendGridTemplateId);

            if (command.SendGridDynamicTemplateData != null)
            {
                var templateData = new TemplateData();

                command.SendGridDynamicTemplateData.TryGetValue("topic", out var topic);
                command.SendGridDynamicTemplateData.TryGetValue("email", out var email);
                command.SendGridDynamicTemplateData.TryGetValue("name", out var name);
                command.SendGridDynamicTemplateData.TryGetValue("message", out var message);

                templateData.Topic = topic.ToString();
                templateData.Email = email.ToString();
                templateData.Name = name.ToString();
                templateData.Message = message.ToString();

                msg.SetTemplateData(templateData);
            }

            await client.SendEmailAsync(msg);
        }

        private class TemplateData
        {
            [JsonPropertyName("topic")]
            public string Topic { get; set; }

            [JsonPropertyName("email")]
            public string Email { get; set; }

            [JsonPropertyName("name")]
            public string Name { get; set; }

            [JsonPropertyName("message")]
            public string Message { get; set; }
        }

难道我做错了什么?

4

1 回答 1

1

我注意到了同样的事情。SendGrid API 似乎无法识别from的[JsonPropertyName]属性。System.Text.Json我必须使用[JsonProperty]属性 fromNewtonsoft.Json才能让参数出现在电子邮件中。

于 2020-10-16T19:14:33.347 回答