I do not receive email via PHPMailer

0

I'm using PHPMailer to send message via form, but it's not working. I wonder where I'm going wrong. Remember that the email that will receive the form information is Gmail. Follow my code for better understanding.

HTML:

<form id="main-contact-form" name="contact-form" action="mail.php" method="post">
    <div class="row  wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms">
        <div class="col-sm-6">
            <div class="form-group">
                <input type="text" name="name" class="form-control" placeholder="Nome" required="required">
            </div>
        </div>
        <div class="col-sm-6">
            <div class="form-group">
                <input type="email" name="email" class="form-control" placeholder="E-mail" required="required">
            </div>
        </div>
    </div>
    <div class="form-group">
        <input type="text" name="subject" class="form-control" placeholder="Assunto" required="required">
    </div>
    <div class="form-group">
        <textarea name="message" id="message" class="form-control" rows="4" placeholder="Escreva sua Mensagem" required="required"></textarea>
    </div>                        
    <div class="form-group">
        <button type="submit" class="btn-submit">Enviar</button>
    </div>
</form>   

PHP:

    <?php
$Nome       = $_POST["name"];   // Pega o valor do campo Nome
$Email       = $_POST["email"];   // Pega o valor do campo Telefone
$Assunto      = $_POST["subject"];  // Pega o valor do campo Email
$Mensagem   = $_POST["message"];   // Pega os valores do campo Mensagem

// Variável que junta os valores acima e monta o corpo do email

$Vai        = "Nome: $Nome\n\nE-mail: $Email\n\nAssunto: $Assunto\n\nMensagem: $Mensagem\n";
date_default_timezone_set('Etc/UTC');
require_once("phpmailer/class.phpmailer.php");

define('GUSER', '[email protected]');   // <-- Insira aqui o seu GMail
define('GPWD', 'senhaaaa');        // <-- Insira aqui a senha do seu GMail

function smtpmailer($para, $de, $de_nome, $assunto, $corpo) { 
    global $error;
    $mail = new PHPMailer();
    $mail->isSMTP();       // Ativar SMTP
    $mail->SMTPDebug = 2;       // Debugar: 1 = erros e mensagens, 2 = mensagens apenas
    $mail->SMTPAuth = true;     // Autenticação ativada
    $mail->SMTPSecure = 'SSL';  // SSL REQUERIDO pelo GMail
    $mail->Host = 'smtp.gmail.com';// SMTP utilizado
    $mail->Port = 465;          // A porta 587 deverá estar aberta em seu servidor
    $mail->Username = GUSER;
    $mail->Password = GPWD;
    $mail->SetFrom($de, $de_nome);
    $mail->Subject = $assunto;
    $mail->Body = $corpo;
    $mail->AddAddress($para);
    if(!$mail->Send()) {
        $error = 'Mail error: '.$mail->ErrorInfo; 
        return false;
    } else {
        $error = 'Mensagem enviada!';
        return true;
    }
}

// Insira abaixo o email que irá receber a mensagem, o email que irá enviar (o mesmo da variável GUSER), 

 if (smtpmailer('[email protected]', '[email protected]', 'renata', 'Assunto do Email', $Vai)) {

    Header("location:http://www.dominio.com.br/obrigado.html"); // Redireciona para uma página de obrigado.

}
if (!empty($error)) echo $error;
?>

Folder Hierarchy:

TECMOV
- css/
- fonts/
- images/
- js/
- phpmailer/
- index.php
- mail.php
    
asked by anonymous 14.02.2016 / 11:01

1 answer

2

Come on:

  • The door to Gmail SMTP is not 25 but 465 (SSL) or 587 (TLS);
  • If this email has 2-step authentication, you should turn it off;
  • You have a limit of 2000 messages per day;
  • In the PHPMailer documentation, there is an example of sending via Gmail ;
  • $mail->SMTPDebug = 2; does not mean what's in your comment, but what's on documentation :
  

$SMTPDebug:

     

SMTP class debug output mode.

     

Debug output level. Options:

     
  • 0 No output
  •   
  • 1 Commands
  •   
  • 2 Data and commands
  •   
  • 3 As 2 plus connection status
  •   
  • 4 Low-level data output
  •   

I hope I have helped

    
14.02.2016 / 14:33