Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/05/2017, 06:42
rbczgz
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: PHPMailer: Utilizar new PHPMailer() 2 o mas veces en mismo script PHP

Hola PJ100,

Se puede usar, pero no tiene sentido, una vez has instanciado la clase, solo necesitas cambiar los datos que corresponda.

Por ejemplo, si tú tienes esto y lo quieres usar más de una vez, sería así:

Código PHP:
Ver original
  1. <?php
  2.  
  3.       // primero hay que incluir la clase phpmailer para poder instanciar
  4.       //un objeto de la misma
  5.       require_once "class.phpmailer.php";
  6.  
  7.       //instanciamos un objeto de la clase phpmailer al que llamamos
  8.       //por ejemplo mail
  9.       $mail = new phpmailer();
  10.  
  11.       //Definimos las propiedades y llamamos a los métodos
  12.       //correspondientes del objeto mail
  13.  
  14.       //Con PluginDir le indicamos a la clase phpmailer donde se
  15.       //encuentra la clase smtp que como he comentado al principio de
  16.       //este ejemplo va a estar en el subdirectorio includes
  17.       $mail->PluginDir = "el_que_sea";
  18.  
  19.       //Con la propiedad Mailer le indicamos que vamos a usar un
  20.       //servidor smtp                            
  21.       $mail->Mailer = "smtp";
  22.  
  23.       //Asignamos a Host el nombre de nuestro servidor smtp
  24.       $mail->Host = "localhost";
  25.      
  26.       //Le indicamos que el servidor smtp requiere autenticación
  27.       $mail->SMTPAuth = true;
  28.  
  29.       //Le decimos cual es nuestro nombre de usuario y password
  30.       $mail->Username = $email_de_envio;
  31.       $mail->Password = $clave_email_envio;
  32.      
  33.       //Indicamos cual es nuestra dirección de correo y el nombre que
  34.       //queremos que vea el usuario que lee nuestro correo
  35.       $mail->From = $email_envio;
  36.  
  37.       $mail->FromName = $nombre_envio;
  38.      
  39.       //Le decimos al sistema que es un e-mail en HTML
  40.       $mail->IsHTML(true);
  41.  
  42.       //Activamos condificacción utf-8
  43.       $mail->CharSet = "UTF-8";
  44.  
  45.       //########################################################
  46.       //
  47.       //  Hasta aquí la parte "común" para todos los envíos,
  48.       //  suponiendo que el remitente sea siempre el mismo, claro
  49.       //
  50.       //########################################################
  51.  
  52.  
  53.       //########################################################
  54.       //
  55.       //  A partir de aquí sería para un envío y para hacer otro
  56.       //  repetiríamos lo que viene a continuación
  57.       //
  58.       //########################################################
  59.  
  60.  
  61.  
  62.       //Preparamos el contenido del mensaje en HTML
  63.               $msg = "Aquí iría el mensaje en HTML";
  64.  
  65.  
  66.               $msg_txt = "Aquí iría el mensaje alternativo en texto plano";
  67.  
  68.       //Asignamos asunto y cuerpo del mensaje
  69.       //El cuerpo del mensaje lo ponemos en formato html
  70.       $mail->Subject = "Asunto del e-mail";
  71.       $mail->Body = $msg;
  72.  
  73.       //Definimos AltBody por si el destinatario del correo no admite
  74.       //email con formato html
  75.       $mail->AltBody = $msg_txt;
  76.  
  77.       //el valor por defecto 10 de Timeout es un poco escaso, por tanto lo pongo a 120  
  78.       $mail->Timeout = 120;
  79.  
  80.       //Indicamos cuales son las direcciones de destino del correo y enviamos los mensajes
  81.       $mail->AddAddress($email_de_destino, $nombre_del_destinatario);
  82.       $mail->AddReplyTo($email_para_la_respuesta, $nombre_para_la_respuesta);
  83.  
  84.       //se envia el mensaje, si no ha habido problemas la variable $success
  85.       //tendra el valor true
  86.       $exito = $mail->Send();
  87.      
  88.       //Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas
  89.       //como mucho para intentar enviar el mensaje, cada intento se hara 5 s
  90.       //segundos despues del anterior, para ello se usa la funcion sleep
  91.        $intentos=1;
  92.          while( ( !$exito ) && ( $intentos<5 ) && ( $mail->ErrorInfo != "SMTP Error: Data not accepted" ) ) {
  93.          sleep(5);
  94.            //echo $mail->ErrorInfo;
  95.            $exito = $mail->Send();
  96.            $intentos = $intentos+1;            
  97.          }
  98.      
  99.       //La clase phpmailer tiene un pequeño bug y es que cuando envia un mail con
  100.       //attachment la variable ErrorInfo adquiere el valor Data not accepted, dicho
  101.       //valor no debe confundirnos ya que el mensaje ha sido enviado correctamente
  102.       if ( $mail->ErrorInfo == "SMTP Error: Data not accepted" ) {
  103.          $exito=true;
  104.       }
  105.        
  106.       if( !$exito ) {
  107.          echo "Problemas enviando correo electrónico a " . $email;
  108.          echo "<br>" . $mail->ErrorInfo;   
  109.       } else {
  110.          echo "Correo enviado correctamente a " . $email;
  111.       }
  112.      
  113.       //########################################################
  114.       //
  115.       //  Hasta aquí sería para un envío y para hacer otro
  116.       //  repetiríamos lo que hemos puesto arriba de esto
  117.       //
  118.       //########################################################
  119.  
  120.  
  121.  
  122.  
  123. ?>

Obviamente lo tienes que analizar y adaptar a tu código y tu proyecto, pero espero que te sirva...