8
respostas

Problema com envio de e-mail

Quando tento enviar um e-mail aparece o seguinte erro:

Erro na msgSMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

não estou conseguindo solucionar. Preciso de ajuda.

8 respostas

Oi Lucas, tudo bom?

Aqui e aqui a gente teve tópicos parecidos no forum. Talvez possa te ajudar.

De qualquer forma, normalmente esse tipo de problema está relacionado à permissão de envio de email no seu gmail. Ou, a porta especificada não está liberada na sua máquina. Da uma olhada =)

Qualquer problema, compartilha seu código aqui com a gente pra ficar mais facil de discutir.

Abraço.

Ativei para permitir aplicativos menos seguros no meu e-mail, desativei meu antivirus e mesmo assim o erro persiste.

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 = "##@gmail.com";
$mail->Password = "##";

$mail->setFrom("##@gmail.com", "Lucas Campioto");
$mail->addAddress("##@gmail.com");
$mail->Subject = "Email de contato";
$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"] = "Enviado com sucesso";
    header("Location: index.php");
}else{
    $_SESSION["danger"] = "Erro na msg" . $mail->ErrorInfo;
    header("Location: contato.php");
}
die();

Lucas, verifica se a porta 587 está aberta na sua máquina.

Além disso, você pode tentar o protocolo ssl ao inves do tls:

    $mail->SMTPSecure = 'ssl';
    $mail->Host = 'smtp.gmail.com';
    $mail->Port = 465;          // A porta 465 deverá estar aberta na sua máquina, assim como a 587 para tls

efetuei a mudança o erro ainda persiste. Ja desativei antivirus , firewall , fiz diversas pesquisas e mesmo assim o seguinte erro continua:

Erro na msgSMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Estranho... testei exatamente esse código:

<?php
session_start();
$nome = "nome";
$email = "email";
$mensagem = "menssagem";

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 = "andrechavesg@gmail.com";
$mail->Password = "minhaSenha";

$mail->setFrom("andrechavesg@gmail.com", "Lucas Campioto");
$mail->addAddress("andrechavesg@gmail.com");
$mail->Subject = "Email de contato";
$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"] = "Enviado com sucesso";
    header("Location: index.php");
}else{
    $_SESSION["danger"] = "Erro na msg" . $mail->ErrorInfo;
    header("Location: contato.php");
}
die();

E o envio aconteceu normalmente:

https://imgur.com/a/iU1Vk

Novamente, verifica se a porta 587 está realmente liberada na sua máquina. No ubuntu, você pode testar com a linha de comando:

openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587

Se houver resposta é porque está liberada. Se der timeout é porque não.

A mesma ideia se repete para a porta 465

o problema continua , segui os passos desse tutorial para liberar as portas: http://wiki.websolute.com.br/Como_liberar_Porta_587_no_Firewall_do_Windows%3F. mas mesmo assim o problema continua

Se a porta está habilitada e o código está certo é realmente muito estranho o erro persistir.

Verifica se seu php tem a extensão que da suporte a esse tipo de requisição. Roda esse código aqui e compartilha com a gente o resultado:

echo !extension_loaded('openssl')?"Desabilitado":"Habilitado";
die();

Ou, compartilha com a gente seu php.ini =)

o resultado do código foi Habilitado. e mesmo assim o erro persiste kk, não sei mais o que fazer