如何将我的PHP代码连接到Heroku的插件“ SendGrid”?

时间:2019-04-16 04:30:18

标签: php composer-php

我购买了一个模板,其中包含使用AJAX的PHP联系人表单。我正在使用Heroku部署我的Web应用程序(我的产品组合),并使用SendGrid作为附件,以便从我的产品组合中发送API驱动的电子邮件。提交表单时,出现“ 500:内部服务器错误”,所以我的问题是,如何将SendGrid集成到已有的PHP代码中?

我不熟悉PHP,在研究期间我确实下载了composer,并且这些文件是自动化的: -供应商文件夹 -composer.json文件 -composer.lock文件

这是我的仓库:https://github.com/Mendiolac/Portfolio 这是我的投资组合链接:https://cm-portfolio.herokuapp.com/

我尝试了SMTP路由,其中​​SendGrip为您提供了通过连接其服务器来配置应用程序的步骤,并且当我测试该应用程序时未成功,没有错误消息。

<?php
require '../vendor/autoload.php';

  if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
    die('Sorry Request must be Ajax POST');
  }

  if(isset($_POST)) {

    $name = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
    $email = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
    $subject = filter_var($_POST["subject"], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
    $message = filter_var($_POST["message"], FILTER_SANITIZE_STRING);

    if(!$contact_email_to || $contact_email_to == 'contact@example.com') {
      die('The contact form receiving email address is not configured!');
    }

    if(strlen($name)<3){
      die($contact_error_name);
    }

    if(!$email){
      die($contact_error_email);
    }

    if(strlen($subject)<3){
      die($contact_error_subject);
    }

    if(strlen($message)<3){
      die($contact_error_message);
    }

    if(!isset($contact_email_from)) {
      $contact_email_from = "contactform@" . @preg_replace('/^www\./','', $_SERVER['SERVER_NAME']);
    }

    $headers = 'From: ' . $name . ' <' . $contact_email_from . '>' . PHP_EOL;
    $headers .= 'Reply-To: ' . $email . PHP_EOL;
    $headers .= 'MIME-Version: 1.0' . PHP_EOL;
    $headers .= 'Content-Type: text/html; charset=UTF-8' . PHP_EOL;
    $headers .= 'X-Mailer: PHP/' . phpversion();

    $message_content = '<strong>' . $name_title . '</strong> ' . $name . '<br>';
    $message_content .= '<strong>' . $email_title . '</strong> ' . $email . '<br>';
    $message_content .= '<strong>' . $message_title . '</strong> ' . nl2br($message);

    $sendemail = mail($contact_email_to, $subject_title . ' ' . $subject, $message_content, $headers);

    if( $sendemail ) {
      echo 'OK';
    } else {
      echo 'Could not send mail! Please check your PHP mail configuration.';
    }
  }
?>

1 个答案:

答案 0 :(得分:0)

您在https://github.com/Mendiolac/Portfolio/commit/0ad2fc815523a26f272f91bb192123c4caf41632上正确地进行了操作,只需将密钥添加到.env文件中