Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro - SMTP connect() failed

Olá, bom dia!

Estou tendo problemas para enviar email, o erro que aparece é SMTP connect() failed Meu 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 = "myemail@gmail.com";
$mail->Password = "mysenha";

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

Já desinstalei o antivírus e ativei a configuração de apps menos seguros do google. Também fiz um debug e aparece várias mensagens e no final aparece este erro: Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\alura\phpemysql\class.smtp.php:173) in C:\xampp\htdocs\alura\phpemysql\envia-contato.php on line 30

1 resposta
solução!

Oi Dyane, tudo bom?

Acredito que o loop de mensagens está acontecendo por causa desse bloco de código aqui:

if($mail->send()) {
    $_SESSION["success"] = "Mensagem enviada com sucesso";
    header("Location: index.php");
} 

Caso o email seja enviado com sucesso, a gente ta redirecionando de volta pra index, que envia o email de novo e assim sucessivamente.

Troca o script de index.php pra qualquer outro que o problema vai deixar de acontecer =)

Testei o código aqui e os emails foram enviados perfeitamente com a biblioteca baixada daqui:

https://github.com/PHPMailer/PHPMailer/tree/5.2-stable

Com, exatamente, esse código aqui:

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

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", "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();

Qualquer problema é só falar.

Abraço