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

Erro ao enviar email utilizando PHPMailer

Bom dia srs,

Estou com um problema que ao tentar enviar uma mensagem de contato utilizando o PHPMailer, eu recebo a seguinte mensagem de erro "Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\loja\class.smtp.php on line 1227".

Estou usando uma versão ainda antiga dos arquivos que não necessita do composer.

Fico no aguardo de algum auxílio.

5 respostas

Oi Gustavo, tido bom?

Compartilha com a gente o seu código de envio de emails? Assim fica mais facil achar possiveis problemas.

Pelo erro o problema está no tempo excedido mesmo. Uma abordagem que você pode tentar é aumentar o time_limit do seu php para um valor maior do que 30 segundos, de repente é só uma limitação de tempo mesmo =)

Aguardo retorno.

Abraço e bons estudos.

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

$mail->setFrom("gustavofelipeschmidt@gmail.com", "Gustavo Schmidt");
$mail->addAddress("gustavofelipeschmidt@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();

Esse é meu código, o erro que aparece parece que vem do arquivo class.smpt.php porém é o arquivo que baixei da versão anterior do PHPMailer.

E sobre o time_limit eu não setei em nenhum lugar, acredito que é algo padrão da própria biblioteca talvez.

Obrigado pelo auxílio

solução!

30 segundos é o padrão do time_limit:

O limite padrão é de 30 segundos, ou se existir o valor definido o valor max_execution_time definido no php.ini. Se seconds for definido como zero, não é imposto nenhum limite.

De qualquer forma, testei seu script aqui e funcionou tranquilo. Qual versão do php você e está utilizando? Essa versão do phpmailer é compativel apenas com as versões <5.6 do php. Caso você esteja utilizando a versão 7.0 ou 7.1 o recomendavel mesmo é realizar o downgrade =)

Aguardo retorno.

Qualquer problema é só falar.

Abraço!

Muito obrigado André, era isso mesmo, eu fiz o downgrade pra versão 5.6 e funcionou normalmente aqui. Obrigado pela ajuda.

Abraço!

A versão 6 do PHPMailer saiu há pouco tempo. Dá uma conferida pra você poder continuar com a versão mais nova do PHP!