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

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

Boa Noite, parece que o PHPMailer não existe mais da forma que foi explicado no curso. Como faço para deixar de uma forma mesmo com as alterações futuras esse código não dê problema. Busquei o código de um outro usuários que estava com o mesmo problema (PHPMailer-5.2-stable) mas na hora do envio ocorreu esse erro:

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

Como faço para corrigir e manter o código sem erros futuro?

4 respostas

Oi Flávio, tudo bom?

O erro:

Erro ao enviar mensagemSMTP connect() failed.

Pode acontecer por alguns motivos.

O mais comum é que tenha rolado algum bloqueio no seu gmail. Para evitar esse tipo de bloqueio basta você habilitar aplicações menos seguras na sua conta.

Outra possibilidade é que sua máquina tenha a porta 587 bloqueada. Você pode testar isso aqui

A ultima, e menos provável, é que você tenha errado a senha.

Verifica os pontos e qualquer coisa é só falar!

Se possível, compartilha com a gente um pouco mais do seu código de envio de email. Assim, eu consigo rodar ele aqui na minha máquina e estar também =)

Abraço

Boa tarde André; Criei uma regra de desbloqueio na porta 587 do meu Firewall do windows (tanto para TCP e UDP), desabilitei meu antivírus. Mudei $mail->SMTPSecure = 'ssl'; // SSL REQUERIDO pelo GMail e nada... depois desabilitei o Firewal tb nada... Fui no google segurança e habilitei tb Permitir aplicativos menos seguros: ATIVADA. veja o código:

<?php

session_start();

//require_once("contato.php");

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

/* utilizar o PHPMailer */

require_once("PHPMailerAutoload.php");

/* configuração do GMAIL */

$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPDebug = 0;        // 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 = 587;          // A porta 587 deverá estar aberta em seu servidor
$mail->Username = "flavio.mrsantos@gmail.com";
$mail->Password = "digite a senha";

$mail->setFrom("flavio.mrsantos@gmail.com", "Alura Curso PHP e MySQL");
$mail->addAddress("flavio.mrsantos@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();

A unica coisa que reparei que mesmo habilitando a portas 587 e 465 no Firewall e desabilitando o Antivirus meu endereço externo essas portas continuam fechadas:

A porta 587 está fechada no IP externo 177.182.. 

Meu provedor aqui é a Net, eu teria que solicitar a eles essa liberação ou teria outra forma? Já que entrei dentro do meu router tentei liberar por lá e tb não consegui.

Opa, rodei seu código e peguei o erro =)

Acontece que atualmente o sistema de autenticação da google exige TLS e bloqueia o SSL para segurança do SMTP.

Fiz a alteração, rodei e funcionou:


<?php

session_start();

//require_once("contato.php");

$nome = "nome teste";
$email = "email teste";
$mensagem = "mensagem teste";

/* utilizar o PHPMailer */

require_once("PHPMailerAutoload.php");

/* configuração do GMAIL */

$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPDebug = 0;        // Debugar: 1 = erros e mensagens, 2 = mensagens apenas
$mail->SMTPAuth = true;        // Autenticação ativada
$mail->SMTPSecure = 'tls';    // TLS REQUERIDO pelo GMail
$mail->Host = 'smtp.gmail.com';    // SMTP utilizado
$mail->Port = 587;          // A porta 587 deverá estar aberta em seu servidor
$mail->Username = "andrechavesg@gmail.com";
$mail->Password = "minhaSenha=)";

$mail->setFrom("andrechavesg@gmail.com", "Alura Curso PHP e MySQL");
$mail->addAddress("andrechavesg@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();
solução!

André, boa tarde.

Testei tb, e não funcionou.... inclusive baixei o programa de treinamento e inseri meus dados (email e senha ) e tb não funcionou. O problema é meu provedor de internet - NET, que está bloqueando a porta 587, 465 e outras... Depois terei que ligar no meu provedor e fazer a solicitação. Obrigado pela atenção que tem me dado. Valeu =)