Stack Overflow em Português Asked by Victor Wurthmann on January 4, 2022
Estou tendo problemas em um projeto que utiliza PHPMailer, o mesmo funcionava normalmente, porém agora está dando problema de Connection Timeout no site, entretanto quando executo o script via terminal o mesmo funciona perfeitamente.
Itens que já verifiquei:
Alguém com o mesmo problema?
<?php
try{
require 'vendors/phpmailer/src/PHPMailer.php';
require 'vendors/phpmailer/src/SMTP.php';
require 'vendors/phpmailer/src/Exception.php';
$layout = "teste servidor antigo";
$mail = new PHPMailerPHPMailerPHPMailer();// create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 2; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPAutoTLS = false;
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
$mail->Host = "mail.swoosh.com.br";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->CharSet = "UTF-8";
$mail->Username = "[email protected]";
$mail->Password = "password";
$mail->SetFrom("[email protected]");
$mail->Subject = "Assunto";
$mail->Body = $layout ;
$mail->AddAddress("[email protected]");
$mail->AddAddress("[email protected]");
$mail->AddAddress("[email protected]");
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
}catch(Exception $e){
print_r($e);
}
Você precisa verificar o tempo necessário para fazer o envio de e-mail. Por padrão o PHP define (no PHP.ini) 30 segundos, caso passe esse tempo, o servidor corta a conexão com o cliente, liberando o servidor para novas conexões.
Você pode alterar esse tempo através do comando abaixo:
set_time_limit($segundos);
Ficando assim:
<?php
try{
require 'vendors/phpmailer/src/PHPMailer.php';
require 'vendors/phpmailer/src/SMTP.php';
require 'vendors/phpmailer/src/Exception.php';
$layout = "teste servidor antigo";
set_time_limit(50);
$mail = new PHPMailerPHPMailerPHPMailer();// create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 2; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPAutoTLS = false;
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
$mail->Host = "mail.swoosh.com.br";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->CharSet = "UTF-8";
$mail->Username = "[email protected]";
$mail->Password = "password";
$mail->SetFrom("[email protected]");
$mail->Subject = "Assunto";
$mail->Body = $layout ;
$mail->AddAddress("[email protected]");
$mail->AddAddress("[email protected]");
$mail->AddAddress("[email protected]");
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
}catch(Exception $e){
print_r($e);
}
Ou você pode fazer uma configuração definitiva para todo o site através do parâmetro max_execution_time em php.ini.
O problema da segunda alternativa é que ela é válida para todo o site, podendo gerar um gargalo no atendimento de novas requisições.
Answered by Francisco Eduardo on January 4, 2022
2 Asked on September 26, 2021 by lucas-ribeiro
1 Asked on March 12, 2021 by thiago-de-barros
1 Asked on March 5, 2021 by richard-lucas
1 Asked on March 1, 2021 by cristiano
1 Asked on February 26, 2021 by laranja-mecnica
1 Asked on February 26, 2021 by valdenirson-pereira
1 Asked on February 25, 2021 by renato-souza
0 Asked on February 24, 2021 by bruno-rayol
1 Asked on February 24, 2021 by eduardo-nogueira
1 Asked on February 23, 2021 by fabrcio
0 Asked on February 22, 2021 by ramon-borges
0 Asked on February 22, 2021 by julliane-freitas
2 Asked on February 21, 2021 by oroborus_0
Get help from others!
Recent Questions
Recent Answers
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP