Error al enviar dos emails seguidos con PHPMailer

[…]


por

Acostumbro a utilizar la librería PHPMailer para enviar emails desde páginas web en PHP.

Es una librería muy fácil y práctica de utilizar, y acostumbra a funcionar bien en todos los servidores web comunes.

Para ello, tengo unos archivos con la cofiguración básica que inluyo en la página donde tengo el formulario y realizo el envío. La estructura que utilizo es:

include('config.php') --> En el archivo config.php tengo las variables de correo para esa cuenta en concreto (servidor smtp, usuario, contraseña, etc...)

Variables propias del email a enviar:

 $adress="$destinatario@principal.com";
 $adressBCC=array();
 $adressBCC[0]="email@destinatario1.com";
 $adressBCC[1]="email@destinatario2.com";
 $subject="Asunto del email"; 
 $body= "texto del mensaje";
 include_once('enviar_mail.php'); --> Archivo que tiene la configuración del phpmailer y realiza el envío
 
 if(!$exito) {
      // mensaje de error al usuario
 } else {
    // mensaje de envío realizado
}

 

¿Qué problema hay?

Pues si solo realizas un envío en una página, ninguno, funciona siempre perfectamente. El problema surge cuando, por la razón que sea necesitas realizar dos envíos diferentes, uno detrás de otro, en la misma página.

En ese caso no puedes utilizar esta estructura, porque el include(‘enviar_mail.php’) sólo te funcionará una vez.

En caso de que necesites realizar dos envíos de email con PHPMailer en la misma página web no podrás hacerlo con include, deberás añadir el script de envío directamente en la página:

 $mail->Timeout=200;
 $mail->ClearAddresses();
 $mail->AddAddress ($adress);
 $mail->Subject = $subject;
 $mail->Body = utf8_decode($body);
 $mail->AltBody = $body;
 $mail->Send();

De esta forma podrás realizar más de un envío en la misma página.

 

 

 

Comentarios

2 respuestas a «Error al enviar dos emails seguidos con PHPMailer»

  1. Avatar de Romeo Huerta

    |

    si se puede realizar utilizando include(‘enviar_mail.php’)

    en este archivo realiza una condición en esta parte del código (la condición es que si de nuevo se solicita el archivo ‘enviar_mail.php’, que ya no este la parte del codigo de «REQUERI»):

    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\SMTP;
    use PHPMailer\PHPMailer\Exception;

    if(empty($bucle_dependencia_PHPMailer)){
    require ‘PHPMailer/Exception.php’;
    require ‘PHPMailer/PHPMailer.php’;
    require ‘PHPMailer/SMTP.php’;
    }else{}
    $bucle_dependencia_PHPMailer = «SI»;

    1. Avatar de esther

      |

      Genial! Muchas gracias por la info, Romeo.