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.
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.
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:
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