SendGrid SMTP与联系表单的集成 [英] SendGrid SMTP integration with contact form
问题描述
我想使用SendGrid SMTP服务从我的网站的联系表发送电子邮件。表单上的提交按钮只会吐出我网站的空白版本,没有电子邮件发送到我的收件箱。
I want to use SendGrid SMTP services to send emails from my website's contact form. The submit button on the form just spits out a blank version of my website, with no emails sent to my inbox.
这是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');
?>
推荐答案
这是发送电子邮件的分步过程使用SendGrid API,
Here's the step-by-step process to send emails using SendGrid API,
- 从 下载打包的库 。解压缩并将其放在您的项目目录中。
- 转到 https://app.sendgrid。 com / settings / api_keys 并为您的帐户/应用程序创建API密钥。
-
现在是编码部分。
- Download the archived SendGrid library from Download Packaged Library. Extract it and put it in your project directory.
- Go to https://app.sendgrid.com/settings/api_keys and create an API key for your account/application.
Now comes to the coding part. Refactor your code in the following way,
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
。最重要的是,根据您的应用程序要求更改电子邮件的主题和正文。
Don't forget to change SENDER'S_EMAIL_ADDRESS
, RECEIVER'S_EMAIL_ADDRESS
and YOUR_API_KEY
as per your requirement. On top of this, change the subject and body of the email as per your application's requirement.
边注::如果在途中出现任何问题,请使用以下三种响应方法进行调试。
Sidenote: In case anything goes wrong in the midway, use the following three response methods for debugging.
echo $response->statusCode();
var_dump($response->headers());
echo $response->body();
这篇关于SendGrid SMTP与联系表单的集成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!