AnswerBun.com

Problema com PHPMailer no envio de e-mails

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:

  • Credenciais de acesso;
  • OpenSSL do servidor;
  • Versão do php.ini carregada pelo browser x terminal;
  • Debuguei o código e o problema aparente está na classe Send do phpmailer todo o resto do script funciona perfeitamente.

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);
}

One Answer

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

Add your own answers!

Related Questions

Por que a função retorna o valor undefined

2  Asked on September 26, 2021 by lucas-ribeiro

         

Executar evento em botão tkinter

1  Asked on March 18, 2021 by rodrigo-cesarino

   

como executar uma procedure com parametro em php

1  Asked on March 6, 2021 by teste1234

   

Criar uma Trigger com JOIN para duplicar os dados

1  Asked on March 5, 2021 by richard-lucas

   

ConcurrentModificationException como proceder?

2  Asked on February 28, 2021 by roknauta

   

Materialize.css inserir icon por cima de uma imagem do card

1  Asked on February 26, 2021 by laranja-mecnica

     

Consultar grupos de distribuição do Active Directory

1  Asked on February 25, 2021 by renato-souza

 

Capturar dados de classes com python

0  Asked on February 24, 2021 by bruno-rayol

     

Como faço para não precisar ficar fazendo requisição toda hora a api?

1  Asked on February 24, 2021 by eduardo-nogueira

     

Como abrir ou fechar todos os itens de um Accordion

1  Asked on February 23, 2021 by fabrcio

     

Utilizar DataTable com Lazy dentro de vários p:tab

0  Asked on February 22, 2021 by ramon-borges

         

Renomear Extent Report após execução dos testes

0  Asked on February 22, 2021 by julliane-freitas

     

Números Palíndromos em C

1  Asked on February 21, 2021 by matheusramos43

 

Preencher lista e finalizar laço python

2  Asked on February 21, 2021 by oroborus_0

       

Formatação CSS para geração de PDF

1  Asked on February 20, 2021 by amanda-lima

   

Identificar um com jQuery

3  Asked on February 19, 2021

   

Ask a Question

Get help from others!

© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP