0
respostas

PHP Mailer com Gmail

Estou tentando criar um formulário para envio de e-mails, o visitante do site coloca seu e-mail, nome e a mensagem, depois envia para o meu gmail. optei pelo gmail pois não tenho uma hospedagem, mas infelizmente o meu código não está funcionado .

Código HTML do form:

<div class="w50 left form">
            <h2>SEND AN E-MAIL</h2>
            <form method="post" id="form">
                <input type="email" name="email" placeholder="E-mail*" required><br>
                <input type="text" name="nome" placeholder="Name*" required><br>
                <textarea name="mensagem" placeholder="Digite sua mensagem aqui!"></textarea><br>
                <input type="submit" name="acao" placeholder="enviar">
            </form>
        </div>

Código JS:

$(function(){
    var include_path = $('base').attr('base');
    $('body').on('submit','form',function(){
        var form = $(this);
        $.ajax({
            beforeSend:function(){
                $('.overlay-loading').fadeIn();
            },
            url: include_path+'ajax/formularios.php',
            method:'post',
            dataType: 'json',
            data:form.serialize()
        }).done(function(data){
            if(data.sucesso == true){
                //Tudo certo vamos melhorar a interface!
                $('.overlay-loading').fadeOut();
                $('.sucesso').fadeIn();
                setTimeout(function(){
                    $('.sucesso').fadeOut();
                },3000)
            }else{
                //Algo deu errado.
                $('.overlay-loading').fadeOut();
                $('.falhou').fadeIn();
                setTimeout(function(){
                    $('.falhou').fadeOut();
                },3000)
            }
        });
        return false;
    });

});

Código PHP:

<?php
    include('../config.php');

    $data = array();
    $assunto = 'Novo mensagem do site!';

    $corpo = '';
    foreach ($_POST as $key => $value) {
        $corpo.=ucfirst($key).": ".$value;
        $corpo.="<hr>";
    }
    $info = array('assunto'=>$assunto,'corpo'=>$corpo);

    $mail = new Email('smtp.gmail.com',meuemail@gmail.com','Senha123*','Nome');
    $mail->addAdress('meuemail@gmail.com','Nome');
    $mail->formatarEmail($info);

    if($mail->enviarEmail()){
        $data['sucesso'] = true;
    }else{
        $data['sucesso'] = false;
    }

    //$data['retorno'] = 'sucesso';

    die(json_encode($data));
?>

Código da class Email() :

<?php

    class Email
    {

        private $mailer;

        public function __construct($host,$username,$senha,$name){

            $this->mailer = new PHPMailer;

            $this->mailer->isSMTP();                                      
            $this->mailer->Host = $host;                    
            $this->mailer->SMTPAuth = true;                               
            $this->mailer->Username = $username;                 
            $this->mailer->Password = $senha;                           
            $this->mailer->SMTPSecure = 'tls';                            
            $this->mailer->Port = 587;                                    

            $this->mailer->setFrom($username, $name);
            $this->mailer->isHTML(true);   
            $this->mailer->CharSet = 'UTF-8';                               
        }

        public function addAdress($email,$nome){
            $this->mailer->addAddress($email,$nome);
        }

        public function formataEmail($info){
            $this->mailer->Subject = $info['assunto'];
            $this->mailer->Body = $info['corpo'];
            $this->mailer->AltBody = strip_tags($info['corpo']);
        }

        public function enviarEmail(){
            if ($this->mailer->send()) {
                return true;
            }else{
                return false;
            }
        }

    }

?>

Não retorna nenhum erro no console, mas não envia o e-mail, somente atualiza a página. Agradeço qualquer tipo de ajuda.