Есть множество различных систем для отправки почты, самой популярной был Mandrill, однако когда они закрылись для публичного использования пришлось искать аналоги. Самым простым в интеграции стал Mailgun
В заметке пойдет речь про решение ошибок связанных с библиотекой php для Mailgun (Mailgun-php), версии 2.0.0. При установке через composer.
# error 1 Puli Factory is not available # error 2 The endpoint you've tried to access does not exist. Check your URL.
Если вы наткнулись на первую ошибку с отсутствием доступа к Puli фабрике, значит вам нужно подключить правильные http client в работу с компонентом Mailgun. Для этого вам нужно установить через composer адаптер Guzzle6:
composer require php-http/guzzle6-adapter
В результате, в вендоры приложения подтянется новый http client. Подключим его к вызову mailer’а mailgun’а:
// ранее у вас могло быть так: $mg = new \Mailgun\Mailgun($key); // теперь нужно сделать так: $client = new \Http\Adapter\Guzzle6\Client(); $mg = new \Mailgun\Mailgun($key, $client);
Проблема «Puli Factory is not available» будет решена. Однако в результате, можно наткнуться на ошибку неверного ednpoint’а, то есть библиотека Mailgun собирает финальные request URL иначе, чтобы это пофиксить, в метод sendMessage первым аргументом нужно передавать «чистый» домен, который заведен у вас в аккаунте Mailgun системы.
$mg->sendMessage('yourdomain.com', [ 'from' => $params['from'], 'to' => $params['to'], 'subject' => $params['subject'], 'html' => $params['html'], ]);
Проблемы с mailgun-php версии ~2.0.0 решены!