Я использую 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' в мой код?
Заранее спасибо.
Я тоже рассматривал возможность перехвата ошибки, но пока что я не смогли это сделать.
Редактировать: Моим обходным путем для этого было отслеживание статуса «подписан» в моей собственной базе данных. Так что теперь я отправляю запись только в том случае, если она показывает, что подписка отменена. Если пользователь спрашивает чтобы отказаться от подписки, я удаляю его из почтовой рассылки, а затем меняю статус своей базы данных на отказ от подписки.