Как отправить несколько электронных писем за один раз с PHP API SparkPost?
Я успешно использовал конечную точку передачи PHP в PHP API Sparkpost https://github.com/SparkPost/php-sparkpost с https://github.com/SparkPost/php-sparkpost, но теперь мне нужно отправить два разных электронных письма на два разных адреса, в одну и ту же точку моей программы.
Казалось, очевидным способом было использование асинхронного метода https://github.com/SparkPost/php-sparkpost, но я не могу заставить это работать с конечной точкой после. Код ниже.
Или есть лучший способ? Я не был уверен, как заставить синхронный код выполнять два отдельных запроса один за другим.
$promise1 = $sparky->transmissions->post([
'content' => [
'from' => ['name' => 'My Service', 'email' => 'noreply@myservice.com'],
'subject' => 'Booking Confirmation',
'html' => $html,
],
'recipients' => [['address' => ['email' => 'myemail@gmail.com']]],
'options' => ['open_tracking' => false, 'click_tracking' => false]
]);
$promise1->then(
function ($response) // Success callback
{
echo('success promise 1');
},
function (Exception $e) // Failure callback
{
dump($e->getCode()."<br>".$e->getMessage());
}
);
$promise2 = $sparky->transmissions->post([
'content' => [
'from' => ['name' => 'My Service', 'email' => 'noreply@myservice.com'],
'subject' => 'Another Email',
'html' => $html,
],
'recipients' => [['address' => ['email' => 'anotheremail@gmail.com']]],
'options' => ['open_tracking' => false, 'click_tracking' => false]
]);
$promise2->then(
function ($response) // Success callback
{
echo('success promise 2');
},
function (Exception $e) // Failure callback
{
dump($e->getCode()."<br>".$e->getMessage());
}
);
1 ответ
Вы определили обработчики для выполнения обещаний и отклонения. Но обещание должно быть выполнено или отклонено для вызова обработчиков.
Поскольку вы ожидаете ответа от SparkPost, вам необходимо wait()
на объекте обещания.
$promise1->wait();
$promise2->wait();
Прочитайте последнюю строку в разделе Тогда (асинхронном) Справочника SparkPost.
Кроме того, если вы планируете несколько обещаний, вы можете использовать \GuzzleHttp\Promise\all()
объединить все обещания (как предложено во второй последней строке того же раздела)