Интеграция SendGrid SMTP с контактной формой

Я хочу использовать SMTP-сервисы SendGrid для отправки электронных писем из контактной формы моего сайта. Кнопка «Отправить» в форме просто выплевывает пустую версию моего веб-сайта, и никакие электронные письма не отправляются на мой почтовый ящик.

Вот код PHP:

<?php

require("class.phpmailer.php");
$mail = new PHPMailer();

// SMTP & Sendgrid settings
$mail->IsSMTP();
$mail->Host = "smtp.sendgrid.net";
$mail->Port = "465";
$mail->SMTPAuth = "true";   // Enable SMTP authentication
$mail->Username = "sendgrid username";
$mail->Password = "sendgrid password";
$mail->SMTPSecure = ''; // Enable encryption, 'ssl' also accepted

// Email headers and body
$mail->SetFrom("abc@123.com");
$mail->AddAddress("abc@123.com");

// Form fields
$Name = $_POST['Name'];
$Email = $_POST['Email'];
$Contact = $_POST['Contact'];
$Message = $_POST['Message'];$mail->Subject  = "Message from yoursite.com";
$mail->Body     = "You have a new message from your contact form on site.com \n \n Name: $Name \n Email: $Email \n Contact: $Contact \n Message: $Message";
$mail->WordWrap = 50;if(!$mail->Send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
else {
echo 'Message has been sent.';
}
header('Location: mywebsite.com');
?>

2

Решение

Вот пошаговый процесс отправки электронных писем с использованием SendGrid API,

  • Загрузите архивированную библиотеку SendGrid с Скачать упакованную библиотеку. Распакуйте его и поместите в каталог вашего проекта.
  • Идти к https://app.sendgrid.com/settings/api_keys и создайте ключ API для вашей учетной записи / приложения.
  • Теперь перейдем к части кодирования. Рефакторинг вашего кода следующим образом,

    require_once('sendgrid-php/sendgrid-php.php');
    
    $from = new SendGrid\Email(null, "SENDER'S_EMAIL_ADDRESS");
    $subject = "Hello World from the SendGrid PHP Library!";
    $to = new SendGrid\Email(null, "RECEIVER'S EMAIL ADDRESS");
    $content = new SendGrid\Content("text/plain", "Hello, Email!");
    $mail = new SendGrid\Mail($from, $subject, $to, $content);
    
    $apiKey = 'YOUR_API_KEY';
    $sg = new \SendGrid($apiKey);
    
    $response = $sg->client->mail()->send()->post($mail);
    if($response->statusCode() == 202){
    echo "Email sent successfully";
    }else{
    echo "Email could not be sent";
    }
    

    Не забудьте поменять SENDER'S_EMAIL_ADDRESS, RECEIVER'S_EMAIL_ADDRESS а также YOUR_API_KEY согласно вашему требованию Кроме того, измените тему и текст сообщения в соответствии с требованиями вашего приложения.


Примечание: Если на полпути что-то пойдет не так, используйте следующие три метода ответа для отладки.

echo $response->statusCode();
var_dump($response->headers());
echo $response->body();
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector