Php скрипт для отправки почты не работает

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

mail_sender.РНР

<?php 
if(isset($_POST['submit'])){
   $to = "someone@gmail.com"; 
   $from = $_POST['email']; 

   $message = " You received the fallowing message:" . "nn" . $_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>

3 ответа

  1. Во-первых, атрибут name отсутствует в вашей кнопке submit. И функция почты php ошибочна.

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

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

    вместо:

    mail($to,$message,$from);
    
  2. Функция PHP по умолчанию mail()не работает в большинстве случаев, особенно с GMail. Это связано с тем, что ваш e-mail должен быть отформатирован особым образом, чтобы быть accpeted почтовым сервером Google. Вы будете лучше использовать почтовую библиотеку, как PHPMailer .

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

        $mail = new PHPMailer();
    
        // ---------- adjust these lines ---------------------------------------
        $mail->Username = "xxx@gmail.com"; // your GMail user name
        $mail->Password = "passwd";  // your GMail Password
        $mail->AddAddress("yyy@gmail.com"); // 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";
        }
    
  3. Я попробовал все и теперь я получил сообщение об ошибке SMTP: не удалось подключиться к серверу и SMTP connect() не удалось

            <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 
    require "PHPMailer-master/PHPMailerAutoload.php";
    
    $mail = new PHPMailer();
    
    $to = "someone@gmail.com"; // required
    $from = $_POST['email']; 
    
    $comment = 
    'Email: '.$from.' <br> />
    Message: '.$_POST['message'].' <br> />'
    ;
    
    
    $mail->Username = "someone@gmail.com"; // your GMail user name
    $mail->Password = "Password";  // your GMail Password
    $mail->AddAddress("someone@gmail.com"); // 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';
      }
      ?>