HTML for не может опубликовать мой PHP скрипт, почему? - PullRequest
0 голосов
/ 29 марта 2020

Я использую SendGrid для отправки электронного письма через форму HTML. HTML выглядит правильно для меня, как и PHP, но когда я нажимаю кнопку отправки, меня перенаправляют на страницу с надписью Cannot POST /sendmail.php. Я новичок в PHP, но код выглядит правильно.

В консоли сообщения об ошибке / страницы есть две ошибки.

Первый говорит следующее: Refused to execute inline script because it violates the following Content Security Policy directive: "default-src 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-ThhI8UaSFEbbl6cISiZpnJ4Z44uNSq2tPKgyRTD3LyU='), or a nonce ('nonce-...') is required to enable inline execution. Note also that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.

Второй говорит следующее: Refused to load the font '<URL>' because it violates the following Content Security Policy directive: "default-src 'self'". Note that 'font-src' was not explicitly set, so 'default-src' is used as a fallback.

Эти сообщения об ошибках актуальны?

Я должен Также отметьте, что я запускаю форму на сервере nodeJS. Работают ли почтовые сценарии при работе на localhost? Вот мой HTML:

<!DOCTYPE html>
<html>
  <body>
    <form name="form" action="sendmail.php" method="POST">
        <input type="text" name="name" placeholder="name">
        <input type="text" name="email" placeholder="email">
        <input type="text" name="message" placeholder="message">
        <button name="submit" type="submit">Submit</button>
    </form>
  </body>
</html>

Вот мой PHP

<?php
/*SendGrid Library*/
require 'vendor/autoload.php';

if (isset($_POST['submit'])) {
    /*Post Data*/
    $user_name = $_POST['name'];
    $user_email = $_POST['email'];
    $user_message = $_POST['message'];

    /*Content*/
    $email = new \SendGrid\Mail\Mail();
    $email->setFrom("$user_email", "$user_name");
    $email->setSubject("Send Email Attachments with Twilio SendGrid");
    $email->addTo("example@example.com", "Example User");
    $email->addContent(
       "text/html",
       "How easy can this be?"
    );

    $sendgrid = new \SendGrid(getenv('SENDGRID_API_KEY'));


    /*Response*/
    try {
        $response = $sendgrid->send($email);
        print $response->statusCode() . "\n";
        print_r($response->headers());
        print $response->body() . "\n";
    } catch (Exception $e) {
        echo 'Caught exception: '. $e->getMessage() ."\n";
    }
}
?>

Все связанные вопросы не очень помогли мне. Спасибо

1 Ответ

0 голосов
/ 29 марта 2020

Очевидно, ваша проблема связана с CSP (Политика безопасности контента).

Очень хорошее руководство: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP

...