Как отправить несколько электронных писем за один раз с 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() объединить все обещания (как предложено во второй последней строке того же раздела)

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