2016-05-25 2 views
0

Я создал простую форму на своей странице, и теперь я попытался добавить php-скрипт для отправки электронной почты. К сожалению, это не сработает. После нажатия на кнопку я хочу, чтобы пользователь оставался на моей стороне без перенаправления.PHP-скрипт для отправки электронной почты не работает

mail_sender.php

<?php 
if(isset($_POST['submit'])){ 
    $to = "[email protected]"; 
    $from = $_POST['email']; 

    $message = " You received the fallowing message:" . "\n\n" . $_POST['message']; 


    mail($to,$message,$from); 
    echo "Mail Sent. Thank you, we will contact you shortly."; 
} 
?> 

HTML

<form action="mail_sender.php" method="post"> 
    <textarea id="email" name="email" rows="1" cols="30" placeholder="Type your email"></textarea> 
    <textarea id="formContent" name="message" rows="6" cols="30" placeholder="Type your message"></textarea> 
    <input type="submit" id="submit" value="Send"> 
</form> 
+0

Пожалуйста, обратите внимание, что при использовании 'почты 'функция в PHP является гарантией того, что ваши электронные письма попадают в папку спама. Используйте сценарий наподобие [PHPmailer] (https://github.com/PHPMailer/PHPMailer) с SMTP-сервером, чтобы доставить его правильно. – s1h4d0w

+0

Вы используете этот скрипт на локальном? –

+0

@HamzaZafeer Да, я запускаю этот скрипт на localhost – mati

ответ

0

Прежде всего имя атрибута отсутствует в вашей кнопки отправки. И функция php mail неверна.

Оно должно быть:

$subject = "Your subject"; 
$headers = "From: $from "; 
mail($to,$subject,$message,$headers); 

вместо:

mail($to,$message,$from); 
0

функция PHP по умолчанию mail() не работает большую часть времени, особенно с GMail. Это связано с тем, что ваше электронное письмо нужно форматировать особым образом, чтобы его можно было использовать почтовым сервером Google. Вам будет лучше использовать почтовую библиотеку, такую ​​как PHPMailer.

Вот как отправить электронное письмо с помощью PHPMailer с учетной записи GMail.

$mail = new PHPMailer(); 

    // ---------- adjust these lines --------------------------------------- 
    $mail->Username = "[email protected]"; // your GMail user name 
    $mail->Password = "passwd"; // your GMail Password 
    $mail->AddAddress("[email protected]"); // recipients email 
    $mail->FromName = "Your Name"; // readable name 

    $mail->Subject = "Subject"; 
    $mail->Body = "Body"; 

    $mail->Host = "smtp.gmail.com"; 
    $mail->Port = 465; // or 587 
    $mail->IsSMTP(); // use SMTP 
    $mail->SMTPAuth = true; // turn on SMTP authentication 
    $mail->From = $mail->Username; 

    //---------------------------------------------------------------------- 

    if(!$mail->Send()) 
    { 
     echo "mail sent"; 
    } 
0

Я попробовал все, и теперь я получил сообщение SMTP Ошибка: Не удалось подключиться к серверу и SMTP подключения() не

 <form action="mail_sender.php" method="post"> 
     <textarea id="email" name="email" rows="1" cols="30" placeholder="Type your email"></textarea> 
     <textarea id="formContent" name="message" rows="6" cols="30" placeholder="Type your message"></textarea> 
     <input type="submit" name="submit" id="submit" value="Send"> 
    </form> 

PHP

<?php 
require "PHPMailer-master/PHPMailerAutoload.php"; 

$mail = new PHPMailer(); 

$to = "[email protected]"; // required 
$from = $_POST['email']; 

$comment = 
'Email: '.$from.' <br> /> 
Message: '.$_POST['message'].' <br> />' 
; 


$mail->Username = "[email protected]"; // your GMail user name 
$mail->Password = "Password"; // your GMail Password 
$mail->AddAddress("[email protected]"); // recipients email 
$mail->setFrom($_POST['email']); 
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; 
$mail->SMTPSecure = 'ssl'; 
$mail->Host = "smtp.gmail.com"; 
$mail->Port = 465; // or 587 
$mail->SMTPDebug = 1; 
$mail->IsSMTP(); // use SMTP 
$mail->SMTPAuth = true; // turn on SMTP authentication 
$mail->Subject = 'Here is the subject'; 

//---------------------------------------------------------------------- 

if(!$mail->send()) { 
echo 'Message could not be sent.'; 
echo 'Mailer Error: ' . $mail->ErrorInfo; 
} else { 
echo 'Message has been sent'; 
    } 
    ?> 
Смежные вопросы