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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP