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

Я пытаюсь отправить электронную почту через Sendgrid, используя API v3, поэтому я хочу передать данные 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 по конкретным причинам

0

Решение

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

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

Выход будет таким же, как в соответствии с вашим требованием.

1

Другие решения

Глядя на вашу структуру 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.log(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);

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

2

По вопросам рекламы [email protected]