Я создаю стандартную форму контакта на веб-сайте, размещенном на веб-сервисах Amazon. Часть, которая, как мне кажется, вызывает у меня проблемы, заключается в следующем:
$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 \r\n Email: $email \r\n 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
.
Любая помощь очень важна. ^ _ ^
Edit: Если это плохой способ сформулировать мой вопрос, просто дайте мне знать. Я более или менее пытаюсь понять, почему переменная $mailsent
возвращает «правдивый», и я не получаю почту.
Стандартный метод PHP-почты не работает должным образом при размещении в Amazon Web Services; кажется, что еще несколько других столкнулись с этим. Есть несколько шагов к настройке службы SAS Amazon и правильное выполнение этого.
Добавьте свой адрес электронной почты на подтвержденные адреса электронной почты в SAS Amazon. Войдите в свою учетную запись веб-служб Amazon. Под заголовком App Services перейдите в SES . Перейдите к проверенным отправителям – адреса электронной почты в левой навигационной панели. Нажмите кнопку «Проверить новый адрес электронной почты» и выполните процедуру проверки электронной почты (это просто!).
Получите свои учетные данные SMTP. После проверки вашей электронной почты перейдите в SMTP-сервисы на странице управления сайтами Amazon Web Services> SES, к которой мы перешли ранее. Нажмите кнопку «Создать мои учетные данные 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' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= "From: Coolest guy" . "\r\n"; ini_set("sendmail_from","webmaster@".$_SERVER["SERVER_NAME"]); mail($to,$subject,$message,$headers);
-$headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= "From: Coolest guy" . "\r\n"; ini_set("sendmail_from","webmaster@".$_SERVER["SERVER_NAME"]); mail($to,$subject,$message,$headers);