Как я могу создать новый адрес электронной почты в списке рассылки Mailgun в Laravel с помощью 'upsert' - PullRequest
0 голосов
/ 05 мая 2020

Я использую API Mailgun в приложении Laravel, чтобы добавить электронную почту пользователей в список рассылки Mailgun. У меня работает добавление и удаление. Однако, если я попытаюсь добавить повторяющийся адрес электронной почты в список, я получаю сообщение об ошибке:

Mailgun \ Exception \ HttpClientException Параметры, переданные в API, недействительны. Проверьте свои входы! Адрес уже существует

В документации указано, что вы можете добавить электронное письмо в список в двух режимах: строгий и дополнительный. По умолчанию используется строгий. Я предполагаю, что если я найду способ добавить параметр upsert => 'yes', он будет работать по желанию.

Мой текущий код выглядит так:

       $instructor = Instructor::find($id);
       $mgClient = Mailgun::create('my_key','https://api.mailgun.net');
       $mailing_list = 'neweventnotify@mydomain.org';
       $address =$request->input('email');

       if($request->neweventnotify == 'on')  {
            $instructor->NewEventNotify = 'Subscribe';
            $instructor->NotifyUpdated = now();
            $name = $instructor->name;
            $vars = array("empid" => $instructor->empid);

          # Add the email address to the notification list
            $result = $mgClient->mailingList()->member()->create(
                                                  $mailing_list,
                                                  $address,
                                                  $name,
                                                  $vars
                                                 );   }

        else {
             // Remove from the notification list.
                 $result = $mgClient->mailingList()->member()->delete($mailing_list, $address);
                 $instructor->NewEventNotify = 'Unsubscribe' ;
                 $instructor->NotifyUpdated = now();
        }

        $instructor->email = $request->input('email');
        $instructor->save();

Может кто-нибудь помогите мне понять, как добавить 'upsert' => 'yes' в мой код?

Заранее спасибо.

Я тоже рассматривал возможность перехвата ошибки, но пока что я не смогли это сделать.

Редактировать: Моим обходным путем для этого было отслеживание статуса «подписан» в моей собственной базе данных. Так что теперь я отправляю запись только в том случае, если она показывает, что подписка отменена. Если пользователь спрашивает чтобы отказаться от подписки, я удаляю его из почтовой рассылки, а затем меняю статус своей базы данных на отказ от подписки.

...