未收到PHP邮件,似乎已成功 - 托管在AWS上



我正在亚马逊云科技上托管的网站上构建一个标准联系表单。我认为给我带来麻烦的部分如下:

        $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服务并使其正常工作有几个步骤。

  1. 将您的发件人电子邮件添加到 Amazon SES 中经过验证的电子邮件地址。登录到您的亚马逊云科技账户。在"应用服务"标头下转到">SES"。导航到左侧导航栏中的已验证发件人 - 电子邮件地址。单击"验证新电子邮件地址"按钮,然后按照电子邮件验证过程进行操作(这很简单!

  2. 获取您的 SMTP 凭据。验证您的电子邮件后,转到我们之前导航到的亚马逊云科技>SES管理页面中的SMTP服务。单击"创建我的 SMTP 凭据"按钮。它将为您提供一次凭据,并且仅一次!因此,请将它们保存在某个地方以备后用。

  3. 创建表单处理程序。创建一个将处理表单提交的 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);

相关内容

  • 没有找到相关文章

最新更新