我正在亚马逊云科技上托管的网站上构建一个标准联系表单。我认为给我带来麻烦的部分如下:
$to = "theCoolestGuy@gmail.com";
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$message = trim($_POST['message']);
$subject = "The best email subject of all time.";
$message = "Name: $name rn Email: $email rn Message: $message";
$headers = "From:" . "veryCoolPerson@gmail.com";
$mailsent = mail($to, $subject, $message, $headers);
if($mailsent) {
if ( $js === 'no-js' ) {
header('Location: thankyoupage.php');
}
else {
$response = array('status' => 'success');
echo json_encode($response);
}
}
在上面的代码中,邮件似乎已成功发送。 $mailsent
等于 1
,代码返回 { status: 'success' }
。我很难弄清楚为什么当$mailsent
的结果true
时我没有收到邮件。
任何帮助都是非常有义务的。 ^_^
编辑:如果这是表达我的问题的糟糕方式,请告诉我。我或多或少试图弄清楚为什么$mailsent
变量返回"真实"而我没有收到邮件。
标准的PHP邮件方法在托管在亚马逊网络服务上时无法正常工作;似乎有很多其他人也遇到了这种情况。设置Amazon SES服务并使其正常工作有几个步骤。
-
将您的发件人电子邮件添加到 Amazon SES 中经过验证的电子邮件地址。登录到您的亚马逊云科技账户。在"应用服务"标头下转到">SES"。导航到左侧导航栏中的已验证发件人 - 电子邮件地址。单击"验证新电子邮件地址"按钮,然后按照电子邮件验证过程进行操作(这很简单!
-
获取您的 SMTP 凭据。验证您的电子邮件后,转到我们之前导航到的亚马逊云科技>SES管理页面中的SMTP服务。单击"创建我的 SMTP 凭据"按钮。它将为您提供一次凭据,并且仅一次!因此,请将它们保存在某个地方以备后用。
-
创建表单处理程序。创建一个将处理表单提交的 php 文件。我选择使用 PHPMailer 库来简化事情。这是让这个东西为我工作的代码:
// get your submitted fields $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; // include phpmailer require_once('class.phpmailer.php'); try { // smtp settings // set this to true to throw exceptions // if you're running into issues $mail = new PHPMailer(); $mail - > IsSMTP(); $mail - > SMTPAuth = true; $mail - > SMTPSecure = "tls"; $mail - > Host = "email-smtp.us-east-1.amazonaws.com"; // be sure this matches your server! can be found in the smtp settings from step 2 $mail - > Username = "XXXXXXXXXXXXXXXXXXXXXX"; // your SMTP username from step 2! $mail - > Password = "XXXXXXXXXXXXXXXXXXXXXX"; // your SMTP password from step 2! $mail - > SetFrom('verfiedEmail@domain.com', 'FromName'); // from email - verified email address in step 1! $mail - > Subject = "Your Email Subject!"; //subject $body = "<strong>The body of your message!</strong>"; // Body of your message $mail - > MsgHTML($body); // recipient $mail - > AddAddress("email@domain.com", "RecepientName"); // this is where the email will be sent // success if ($mail - > Send()) { // woohoo! the mail sent! do your success things here. } } // errors :( } catch (phpmailerException $e) { echo $e - > errorMessage(); } catch (Exception $e) { echo $e - > getMessage(); }
执行这些步骤后,您应该立即让它工作。玩得愉快。
$headers = 'MIME-Version: 1.0' . "rn";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "rn";
$headers .= "From: Coolest guy" . "rn";
ini_set("sendmail_from","webmaster@".$_SERVER["SERVER_NAME"]);
mail($to,$subject,$message,$headers);