简体   繁体   中英

Php script to sending email doesn't work

I created a simple form on my page and now I tried to add php script to sending email. Unfortunately it does not work. After clicking on the button, I want the user to remain on my side without redirection.

mail_sender.php

<?php 
if(isset($_POST['submit'])){
   $to = "someone@gmail.com"; 
   $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>

First of all name attribute is missing in your submit button. And php mail function is wrong.

It should be:

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

instead of:

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

PHP's default mail() function doesn't work most of the times, especially with GMail. This is because your e-mail needs to be formatted in a special way to be accpeted by Google's mail server. You'll be better off using a mail library like PHPMailer .

Here's how to send an e-mail using PHPMailer from a GMail Account.

    $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";
    }

I tried everything and now i received message SMTP ERROR: Failed to connect to server and SMTP connect() failed

        <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 = "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';
  }
  ?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM