Отправка электронной почты через sendgrid с использованием v3 API

Я пытаюсь отправить электронные письма через Sendgrid, используя v3 API, делая это, я хочу передать данные json, подобные этому

{ 
"personalizations": [
    {
      "to": [
        {
          "email": "[email protected]",
          "name": "John Doe"
        }
      ],
      "subject": "Hello, World!"
    }
  ],
  "from": {
    "email": "[email protected]",
    "name": "Sam Smith"
  },
  "reply_to": {
    "email": "[email protected]",
    "name": "Sam Smith"
  }
}

мой код:

$email_content = [
                'personalizations' => [
                    'to' => [
                        'email' => '[email protected]',
                        'name' => 'Ashutosh'
                    ],
                    'subject' => 'Test'
                ],
                'from' => [
                    'email' => '[email protected]',
                    'name' => 'Ashu'
                ],
                'reply_to' => [
                    'email' => '[email protected]',
                    'name' => 'AO'
                ],
                'content' => [
                    'type' => 'text/plain',
                    'value' => 'Hello'
                ]
            ];

после json_encode () вывод будет в следующем формате:

{
   "personalizations":{
      "to":{
         "email":"[email protected]",
         "name":"Ashutosh"
      },
      "subject":"Test"
   },
   "from":{
      "email":"[email protected]",
      "name":"Ashu"
   },
   "reply_to":{
      "email":"[email protected]",
      "name":"AO"
   },
   "content":{
      "type":"text/plain",
      "value":"Hello"
   }
}

Любая помощь будет оценена по достоинству. Я хочу использовать только v3 API по определенным причинам

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
603
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вам нужно добавить [] - скобки к вашему массиву 'to'. Пожалуйста, посмотрите.

'to' => [
    [ // add this brackets
        'email' => '[email protected]',
        'name' => 'Ashutosh'
    ] // add this brackets 
],

Результат будет таким же, как и в случае с вашим требованием.

Глядя на вашу структуру json, она выглядит иначе, чем в документации, обратите внимание, что «персонализации» и «кому» являются объектами. https://sendgrid.com/docs/API_Reference/api_v3.html, они также структурируют данные перед отправкой.

var data = JSON.stringify({
  "personalizations": [
    {
      "to": [
        {
          "email": "[email protected]",
          "name": "John Doe"
        }
      ],
      "subject": "Hello, World!"
    }
  ],
  "from": {
    "email": "[email protected]",
    "name": "Sam Smith"
  },
  "reply_to": {
    "email": "[email protected]",
    "name": "Sam Smith"
  }
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.info(this.responseText);
  }
});

xhr.open("POST", "https://api.sendgrid.com/v3/mail/send");
xhr.setRequestHeader("authorization", "Bearer <<YOUR_API_KEY>>");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);

Надеюсь, это вам поможет.

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