Невозможно передать пользовательский атрибут в шаблон Brevo с помощью С#

Я пытаюсь отправить электронное письмо с помощью Brevo, имея существующий шаблон, который может отправлять электронное письмо, но не видит обновленное свойство в электронном письме. Вот мой код

static void Main(string[] args)
{
    string apiKey = "";

    // API endpoint for sending SMTP emails
    string apiUrl = "https://api.sendinblue.com/v3/smtp/email";

    // Example email data with template
    var emailData = new
    {
        sender = new { email = "[email protected]", name = "A" },
        to = new List<object> { new { email = "[email protected]" } },
        templateId = 1, // Template ID from Brevo
        **value = new Dictionary<string, object>
        {
            { "EMPLOYEENAME", "MYNAME" },
        }**
    };

    // Serialize email data to JSON
    string jsonData = Newtonsoft.Json.JsonConvert.SerializeObject(emailData);

    // Create HTTP client instance
    using (var client = new HttpClient())
    {
        // Add API key to request headers
        client.DefaultRequestHeaders.Add("api-key", apiKey);

        try
        {
            // Create HTTP POST request
            var response = client.PostAsync(apiUrl, new StringContent(jsonData, Encoding.UTF8, "application/json")).Result;

            // Check if request was successful
            if (response.IsSuccessStatusCode)
            {
                Console.WriteLine("Email sent successfully.");
            }
            else
            {
                string errorMessage = response.Content.ReadAsStringAsync().Result;
                Console.WriteLine($"Failed to send email. Error: {errorMessage}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error sending email: {ex.Message}");
        }
    }
}

Я пытаюсь заменить это, но почему-то это не работает

**value = new Dictionary<string, object>
            {
                { "EMPLOYEENAME", "MYNAME" },
            }**

Это мой конструктор шаблонов

Это то, что я добавил в свои атрибуты контакта

Добавляем дизайн шаблона

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, причина в том, что вы передаете аргументы в шаблон, используя value. Вы должны передать их, используя params, по крайней мере, так сказано в документации. Итак, попробуйте что-то вроде этого:

var emailData = new
    {
        sender = new { email = "[email protected]", name = "A" },
        to = new List<object> { new { email = "[email protected]" } },
        templateId = 1, // Template ID from Brevo
        @params= new Dictionary<string, object>
        {
            { "EMPLOYEENAME", "MYNAME" },
        }
    };

Когда я использую параметры, он показывает некоторую ошибку. Неверный декларатор члена анонимного типа. Члены анонимного типа должны быть объявлены с присвоением члена, простым именем или доступом к члену.

Developer 18.07.2024 07:43

Пустая трата, которую я не могу подключить, чтобы проверить это самостоятельно (я получаю несанкционированный доступ :)), но, возможно, есть какой-то очень специфический способ передачи этих параметров. Он должен работать.

Bartosz 18.07.2024 08:01

Хорошо, я не могу увидеть данное имя в полученном письме.

Developer 18.07.2024 10:02

@Разработчик, возможно, проблема с шаблоном. Убедитесь, что имя заполнителя совпадает с именем отправляемого вами ключа EMPLOYEENAME. Во-вторых, убедитесь, что заполнитель в шаблоне электронного письма правильно отформатирован. Вы получаете какие-либо ошибки от API?

Bartosz 18.07.2024 12:01

@Bartisz нет ошибок от API. Я получаю электронные письма, единственная проблема заключается в замене EMPLOYEENAME. Я добавил дизайн шаблона

Developer 18.07.2024 14:43

@Разработчик, откуда ему знать, что EMPLOYEENAME то, что вы даете, находится в contact объекте? Или где в вашем коде вы инициализируете объект contact?

Bartosz 18.07.2024 14:45

Так стоит ли мне делать что-то подобное? динамические транзакцииParams = новый {params = новый {контакт = новый {EMPLOYEENAME = "JohnDoe", } } };

Developer 18.07.2024 14:47

Честно говоря, я никогда не использовал этот инструмент, я просто ввел документацию, чтобы ответить на ваш вопрос. Найдите способ, которым это нужно сделать в документации, и все должно работать нормально :)

Bartosz 18.07.2024 14:48

Хорошо, можете ли вы поделиться документацией, которую вы прочитали?

Developer 18.07.2024 14:54

developers.brevo.com/reference/getting-started-1 Согласно документации, вы должны использовать params.EMPLOYEENAME в своем шаблоне.

Bartosz 18.07.2024 15:10

Мне удалось прочитать содержимое шаблона и заменить его.

Developer 18.07.2024 15:56

@Разработчик, если мой ответ решил вашу проблему, подумайте о том, чтобы принять его.

Bartosz 18.07.2024 18:16

Другие вопросы по теме