Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Envio de Email com conta do Gmail não funciona

Pessoal,

Meu codigo está assim. Estou usando minha conta do gmail para o envio do email mas não funciona. Está dando erro de autenticação mas eu estou preenchendo corretamente o campo smtp_pass com a minha senha da minha conta do gmail.

Alguem pode ajudar?

Segue abaixo o meu codigo.

    $config["protocol"] = "smtp";
            $config["smtp_host"] = "ssl://smtp.gmail.com";
            $config["smtp_user"] = "fdesiqueira.ti@gmail.com";
            $config["smtp_pass"] = "********";
            $config["charset"] = "utf-8";
            $config["mailtype"] = "html";
            $config["newline"] = "\r\n";
            $config["smtp_port"] = '465';
            $this->email->initialize($config);

            $produto = $this->produtos_model->busca($venda["produto_id"]);

            $vendedor = $this->usuarios_model->busca($produto["usuario_id"]);

            $dados = array("produto" => $produto);
            $conteudo = $this->load->view("vendas/email", $dados, TRUE);

            $this->email->to($vendedor["email"]);            
            $this->email->from("fdesiqueira.ti@gmail.com", "Mercado");
            $this->email->subject("Seu produto {$produto['nome']} foi vendido!");
            $this->email->message($conteudo);
               if(!$this->email->send()) {
                   $this->session->set_flashdata("danger", "Houve erro no envio do email.");
                print_r($this->email->print_debugger());
               }
            else {
                $this->session->set_flashdata("success", "Email enviado com sucesso.");
            };
5 respostas

Oi João, tudo bem?

O Gmail possui uma opção de segurança que você precisa habilitar, para que aplicações "menos seguras", que são as aplicações que desenvolvemos, possam usar o gmail para enviar e-mails.

Acesse esse link: https://myaccount.google.com/u/2/security?pli=1

Depois procure pela opcão: Allow less secure apps e ligue (mude para ON). No meu caso, ficou em inglês. Se para você, estiver em português a opção é algo como Habilitar aplicações menos seguras.

Abraço

Fiz a alteração mas ainda não consegui enviar o email.

Meu codigo agora está assim:

    $config["protocol"] = "smtp";
    $config["smtp_user"] = "fdesiqueira.ti@gmail.com";
    $config["smtp_pass"] = "********";
    $config["charset"] = "utf-8";
    $config["mailtype"] = "html";
    $config["newline"] = "\r\n";
    $config["smtp_port"] = '465';
    $this->email->initialize($config);

    $produto = $this->produtos_model->busca($venda["produto_id"]);

    $vendedor = $this->usuarios_model->busca($produto["usuario_id"]);

    $dados = array("produto" => $produto);
    $conteudo = $this->load->view("vendas/email", $dados, TRUE);

    $this->email->to($vendedor["email"]);            
    $this->email->from("fdesiqueira.ti@gmail.com", "Mercado");
    $this->email->subject("Seu produto {$produto['nome']} foi vendido!");
    $this->email->message($conteudo);

    if(!$this->email->send()) {
            $this->session->set_flashdata("danger", "Houve erro no envio do email.");
        print_r($this->email->print_debugger());
    } else {
        $this->session->set_flashdata("success", "Email enviado com sucesso.");
    };

    $this->session->set_flashdata("success", "Pedido de compra efetuado com sucesso.");            
} else {
    $    this->session->set_flashdata("danger", "Faça Login antes de efetuar a compra.");
}

redirect("/");

João, não vi a linha em que você carrega a biblioteca. Antes do $config faça o seguinte:

$this->load->library("email");
solução!

Paulo,

Já tinha funcionado. Eu tinha acessado a conta de correio errada.

Obrigado pelo apoio.

Que bom João. Se minha resposta lhe ajudou, favor marcar ela como solução do problema.

Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software