Фон:
Я использую службы приложений Azure для размещения веб-сайта php. Я новичок в Azure и PHP (программирование в этом отношении). В качестве отправной точки я следил за набором учебников по PHP. Учебное пособие, которым я сейчас пользуюсь, требует использования почтовой функции PHP, однако это не помогает, и из того, что я прочитал, связано с тем, что мне нужно использовать почтовую службу SendGrid при работе с размещенным веб-сайтом Azure.
Принятые шаги:
Сначала я установил SendGrid с рынка Azure. Затем я установил Composer в каталог своего проекта («wwwroot») с последующей установкой зависимостей. Я попытался использовать и «sendgrid / smtpapi», и «sendgrid / sendgrid-php» в качестве зависимостей в файле «composer.json». Установки оказались успешными, и папка «Vendor» (в «wwwroot») была обновлена файлами «Composer» и «SendGrid».
Я попробовал несколько примеров кода для SendGrid, но решил придерживаться приведенного ниже (кажется, проще)
// using SendGrid's PHP Library
// https://github.com/sendgrid/sendgrid-php
require 'vendor/autoload.php';
$sendgrid = new SendGrid("SENDGRID_APIKEY");
$email = new SendGrid\Email();
$email->addTo("[email protected]")
->setFrom("[email protected]")
->setSubject("Sending with SendGrid is Fun")
->setHtml("and easy to do anywhere, even with PHP");
$sendgrid->send($email);
** Проблема: ** Ошибка». Когда я просматриваю подробные журналы ошибок, я получаю еще одну ошибку «Ошибка HTTP 404.0 — Not Found».
Я знаю, что файл «vendor / autload.php», требуемый почтовым скриптом, существует
Когда я запускаю веб-сайт, почтовый скрипт прерывается на 500.0 — Внутренний сервер, как я вижу его на портале FTP.
Однако, если я пытаюсь перейти к папке «Vendor» через сайт «Kudu», возникает ошибка «Session Expired» (странно, что это происходит только для этой конкретной папки). Инструменты разработчика Internet Explorer показывают еще одну ошибку «403 Запрещено — Доступ запрещен»
Заключение:
Я пришел к выводу, что почтовый скрипт не работает, потому что он не может получить доступ к нужным файлам из папки «Поставщик». Однако я не знаю, почему или как обойти это. Любые рекомендации будут с благодарностью.
Как я создал новый тестовый проект для Azure Web Apps, чтобы отправлять электронные письма через SendGird SDK. Я не воспроизвел вашу проблему, вот мои шаги по созданию проекта SendGird, к вашему сведению:
composer.json
файл в корневом каталоге приложения. Содержание файла:{
"require": {
"sendgrid/sendgrid": "~4.0"}
}
composer install
установить зависимость.Мой тестовый код такой же, как и у вас, и он отлично работает на моей стороне. Вы можете попробовать эти шаги.
Других решений пока нет …