Alert Ao Enviar Email com Sucesso

Asked

Viewed 670 times

0

Guys, I need help when the email is sent successfully appear a message, in an Alert(may be another way), saying q was successfully sent , so the user has no doubts whether it was or n. Follow the code I have:

HTML

<form id="formulario" name="formulario" action="mail.php" method="post"> 
                    <div class="form-group">
                        <input type="name" name="name" class="form-control mt-2" placeholder="Nome" autocomplete="off" required>
                        <input type="email" name="email" class="form-control mt-2" placeholder="[email protected]" autocomplete="off" required>
                        <textarea class="form-control mt-2" name="message" rows="8" placeholder="Escreva aqui..." required></textarea>
                        <input  type="submit" class="btn btn-lg btn-block mt-3 enviar-b" Enviar>
                    </div>
                </form>

JS

<script language="JavaScript">
var frmvalidator  = new Validator("formulario");
frmvalidator.addValidation("name","req","Porfavor preencha seu nome");
frmvalidator.addValidation("email","req","Porfavor preencha seu email");
frmvalidator.addValidation("email","email",
  "Email Inválido");

PHP

<?php header('Content-Type: text/html; charset=utf-8');
$errors = '';
$myemail = '[email protected]';//<-----Put Your email address here.
if(empty($_POST['name'])  ||
   empty($_POST['email']) ||
   empty($_POST['message']))
{
    $errors .= "\n Erro: Todos os campos são requeridos";
}
$name = $_POST['name'];
$email_address = $_POST['email'];
$message = $_POST['message'];
if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",
$email_address))
{
    $errors .= "\n Erro: Email Inválido";
}

if( empty($errors))
{
$to = $myemail;
$email_subject = "Formulário de Contato: $name";
$email_body = "Você recebeu uma nova mensagem. ".
"Aqui estão os detalhes:\n Nome: $name \n ".
"Email: $email_address\n Menssagem: \n $message";
$headers = "Para: $myemail\n";
$headers .= "De: $email_address";
mail($to,$email_subject,$email_body,$headers);
//redirect to the 'thank you' page
header('Location: index.html');}
?>

3 answers

1

In PHP replace:

mail($to,$email_subject,$email_body,$headers);
//redirect to the 'thank you' page
header('Location: index.html');}

For:

$send_mail = mail($to,$email_subject,$email_body,$headers);
if($send_mail){
    //alert enviado!
    echo "<script>alert('E-mail enviado com sucesso!');</script>";
    //redireciona para onde quiser, neste caso, para index.html
    header('Location: index.html');//redireciona para onde quiser, neste caso, para index.html
} else {
    //alert não enviado!
    echo "<script>alert('Falha ao enviar e-mail.');</script>";
    //redireciona para onde quiser, neste caso, para index.html
    header('Location: index.html');
}
}

0

You can insert the message in the PHP session

Your index page should be php and not HTML.

//Página mail.php antes do header('Location: index.html');
$_SESSION['msg'] = 'E-mail enviado com sucesso';

Ai prints the message in your index.php

//Página index.html modificada para index.php
if(isset($_SESSION['msg']) && !empty($_SESSION['msg']) )
{
   echo $_SESSION['msg'];
}

I hope I’ve helped.

0

You can create a simple Alert with Javascript. Assign the function mail() a variable and check if it is true, that the function returned no error to show a successful Alert:

$envio = mail($to,$email_subject,$email_body,$headers);
if($envio){
  // exibe o alert de que foi enviado
  echo '<script>alert("Email enviado!")</script>';
  // redireciona
  header('Location: index.html');
}else{
  // exibe o alert de que não foi enviado caso a função mail() tenha retornado erro
  echo '<script>alert("Email NÃO foi enviado!")</script>';
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.