8
respostas

Erro ao enviar email com SMTP

Boa noite, estou com um problema com a atividade de enviar email na página de contato, segue o código:

<?php
session_start();
$nome = $_POST["nome"];
$email = $_POST["email"];
$mensagem = $_POST["mensagem"];

require_once("PHPMailerAutoload.php");

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "gabriellacerdajardim@gmail.com";
$mail->Password = "senhacerta";

$mail->setFrom("gabriellacerdajardim@gmail.com", "Alura Curso PHP e MySQL");
$mail->addAddress("gabriellacerdajardim@gmail.com");
$mail->Subject = "Email de contato da loja";
$mail->msgHTML("<html>de: {$nome}<br/>email: {$email}<br/>mensagem: {$mensagem}</html>");
$mail->AltBody = "de: {$nome}\nemail:{$email}\nmensagem: {$mensagem}";

if($mail->send()) {
    $_SESSION["success"] = "Mensagem enviada com sucesso";
    header("Location: index.php");
} else {
    $_SESSION["danger"] = "Erro ao enviar mensagem " . $mail->ErrorInfo;
    header("Location: contato.php");
}
die();

Acredito que não seja necessário o código do formulário também, mas enfim, quando clico em Enviar, o seguinte erro aparece:

Erro ao enviar mensagem SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Tudo está como na aula. No lugar de "senhacerta" estou colocando a minha senha desta conta do gmail (não é o email que está inserido no banco de dados pra acesso do login). Agradeço por qualquer ajuda. E ja ativei a parte do google de permitir acesso à apps menos seguros.

8 respostas

Você precisa da permissão da sua conta do gmail,

no gmail vá em: Minha Conta > Login e Segurança > lá embaixo procure por "Permitir aplicativos menos seguros:" caso esteja desativado, é só ativar.

então, só testa novamente que deve funcionar.

Fiz o mesmo aqui (meu email, minha senha e ja permiti apps menos seguros) e também não consegui. Alguém tem a solução?

Olá, também estou com problemas para enviar emails no contato, está tudo ok no localhost, mas quando subo para um servidor ele da o seguinte erro:

SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

vocês podem enviar o código de vocês aqui?

Srs, bom dia!

Eu estou com o mesmo erro. Eu chamei ao metodos $mail->SMTPDebug = 3; O seguinte erro é apresentado:

Se alguém puder ajudar. Já estou desistindo....

017-08-02 14:16:57    Connection: opening to smtp.gmail.com:587, timeout=300, options=array ( ) 2017-08-02 14:16:57    Connection: opened 2017-08-02 14:16:57    SERVER -> CLIENT: 220 smtp.gmail.com ESMTP q127sm4320741qkf.9 - gsmtp 2017-08-02 14:16:57    CLIENT -> SERVER: EHLO localhost 2017-08-02 14:16:57    SERVER -> CLIENT: 250-smtp.gmail.com at your service, [186.231.140.59] 250-SIZE 35882577 250-8BITMIME 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250 SMTPUTF8 2017-08-02 14:16:57    CLIENT -> SERVER: STARTTLS 2017-08-02 14:16:57 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS 2017-08-02 14:16:58    Connection failed. Error #2: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed [C:\xampp\htdocs\loja\phpMailer\class.smtp.php line 370] 2017-08-02 14:16:58    SMTP Error: Could not connect to SMTP host. 2017-08-02 14:16:58    CLIENT -> SERVER: QUIT 2017-08-02 14:16:58    SERVER -> CLIENT: 2017-08-02 14:16:58    SMTP ERROR: QUIT command failed: 2017-08-02 14:16:58    Connection: closed 2017-08-02 14:16:58    SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Erro ao enviar mensagem SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Srs eu consegui enviar o e-mail!

Tive que alterar uma configuração na minha conta do gmail: https://www.youtube.com/watch?v=P-q2QfFA3vQ

Fiz a inclusão do código abaixo que não consta no treinamento:

$mail->SMTPOptions = array(
'ssl' => array(
    'verify_peer' => false,
    'verify_peer_name' => false,
    'allow_self_signed' => true
));

Segue o código completo:

<?php

require_once("../phpMailer/PHPMailerAutoload.php");

$nome = $_POST["nome"];
$email = $_POST["email"];
$mensagem = $_POST["mensagem"];

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "tyrionlannistertywin@gmail.com";
$mail->Password = "xura";
//$mail->SMTPDebug = 3;

$mail->setFrom("tyrionlannistertywin@gmail.com", "Alura Curso PHP e MySQL");
$mail->addAddress("tyrionlannistertywin@gmail.com");
$mail->Subject = "Email de contato da loja";
$mail->msgHTML("<html>de: {$nome}<br/>email: {$email}<br/>mensagem: {$mensagem}</html>");
$mail->AltBody = "de: {$nome}\nemail:{$email}\nmensagem: {$mensagem}";
$mail->SMTPOptions = array(
'ssl' => array(
    'verify_peer' => false,
    'verify_peer_name' => false,
    'allow_self_signed' => true
));

if($mail->send()) {
    echo "Mensagem enviada com sucesso";    
} else {
    echo "Erro ao enviar mensagem " . $mail->ErrorInfo;    
}

Lista de arquivos: class.phpmailer.php class.pop3.php class.smtp.php PHPMailerAutoload.php

Falaa galera! eu estava com o mesmo problema do Leandro Hendrix e solução dele funcionou

Obg Leandro

Abç

Oi Felipe!

Fico feliz em saber que meu comentário foi útil para você! Bons estudos!!!