Foros del Web » Programando para Internet » PHP »

problemas enviando correos phpmailer

Estas en el tema de problemas enviando correos phpmailer en el foro de PHP en Foros del Web. Cordial Saludo. Estoy intentando enviar correos masivos de un blog de noticias tecnologicas donde los articulos se almacena en la base de datos. Lo que ...
  #1 (permalink)  
Antiguo 07/09/2016, 08:35
 
Fecha de Ingreso: febrero-2013
Ubicación: Cali Colombia
Mensajes: 118
Antigüedad: 11 años, 2 meses
Puntos: 0
problemas enviando correos phpmailer

Cordial Saludo.
Estoy intentando enviar correos masivos de un blog de noticias tecnologicas donde los articulos se almacena en la base de datos.
Lo que envio es una introduccion sencilla de los primeros textos de cada articulo; esto se almacena en una variable $articulos.

Código PHP:
Ver original
  1. foreach($array as $key=>$val){
  2.  if($key%2 == 0){
  3.    $articulos .= '<div class="col-xs-12  panel panel-default">
  4.                 <h2 style="margin-left:0;padding-top:0px;">'.utf8_encode($val["titulo"]).'</h2>
  5.             <div class="col-xs-5 col-md-3">
  6.               <a href="#" class="thumbnail">
  7.                     <img class="modal-content" src="'.$val["img"].'">
  8.               </a>
  9.             </div>
  10.             <div class="col-xs-7 col-md-9">
  11.               '.utf8_encode($val["texto"]).'
  12.                   <a href="'.$val['id'].'" class="btn btn-danger btn-xs"> Leer mas</a>
  13.                                     </div>
  14.                                   </div>';
  15.                 }else{
  16.                   $articulos .= '<div class="col-xs-12  panel panel-default">
  17.                                    <h2 style="margin-left:0;padding-top:0px;">'.utf8_encode($val["titulo"]).'</h2>
  18.                                     <div class="col-xs-7 col-md-9">
  19.                                         '.utf8_encode($val["texto"]).'
  20.                                       <a href="'.$val["id"].'" class="btn btn-danger btn-xs"> Leer mas</a>
  21.                                     </div>
  22.                                     <div class="col-xs-5 col-md-3">
  23.                                       <a href="#" class="thumbnail">
  24.                                         <img class="modal-content" src="'.$val["img"].'">
  25.                                       </a>
  26.                                     </div>
  27.                                   </div>'; 
  28.                 }
  29.             }

Aqui abajo toma una plantilla que tiene un tipo de marco y en el centro tiene un texto
"%panel__% donde uso el str_replace donde remplazara las cadenas de texto almacenadas en la variable $articulos y parsearlo ahi.

El problema es que al enviar por correo solo se ve el marco, no se observa los articulos.
Probe antes de enviar el correo hacer un echo a la plantilla y observo que la estructura de la pagina esta correcta, el marco y los articulos todo perfecto pero en el correo no.

Pienso que es la codificacion del texto pero para eso uso el utf8_encode y decode y dentro del phpmailer he agregado todas las codificaciones como la iso, utf8 uno que es window. .. no recuerdo bien pero aun sin exito.

Lo que realizo es una peticion ajax a un archivo llamado enviar_correo.php donde hace el echo y se observa por el response la estructura bien, y en donde envia la peticion tengo un echo json_encode y observo que imprime la plantilla con el marco y sin los articulos, tal cual como llega en el correo.
Código PHP:
Ver original
  1. if(file_exists("plantilla.html")){
  2.                 $template = "plantilla.html";
  3. }
  4.             $plantilla = file_get_contents($template);
  5.             $plantilla = str_replace("%panel__%",$articulos,$plantilla);
  6.             echo $plantilla;
  7.             $this->mail->AltBody = $plantilla;
  8.             $this->mail->msgHTML($plantilla);
  9.             $this->mail->Body = $plantilla;
  #2 (permalink)  
Antiguo 07/09/2016, 08:55
 
Fecha de Ingreso: febrero-2013
Ubicación: Cali Colombia
Mensajes: 118
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: problemas enviando correos phpmailer

Tambien, en el SMTPDebug lo asigno a 3 y veo en la estructura todo el marco, donde se encuentra
Código HTML:
Ver original
  1. <div class="container-fluid">
  2.     %panel__%
  3.    </div>
simplemente se ve el espacio en blanco.
  #3 (permalink)  
Antiguo 07/09/2016, 10:11
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: problemas enviando correos phpmailer

Si crees que el problema es de codificación de caracteres (es es configuración), mira mis respuestas en estos post:
http://www.forosdelweb.com/f18/elimi...s-php-1148007/

http://www.forosdelweb.com/f18/probl...n-php-1149010/

http://www.forosdelweb.com/f18/probl...ildes-1149957/

Y si el problema fuera en phpmailer, yo uso esta función:
Código PHP:
Ver original
  1. function enviar_correo($destinatarios, $mail_asunto, $mail_contendio, $from, $from_name, $archivos_adjuntos_ruta,$archivos_adjuntos_temp){
  2. $mail= new PHPMailer(); // defaults to using php "mail()"
  3. $mail->CharSet = 'UTF-8';
  4. $body= $mail_contendio;
  5. $mail->IsSMTP(); // telling the protocol to use SMTP
  6. $mail->Host = "smtp.farmaciassanasana.com.mx"; // SMTP server
  7. $mail->From = $from;
  8. $mail->FromName = $from_name;
  9. $mail->Subject = $mail_asunto;
  10. $mail->MsgHTML($body);
  11. $destinatarios=explode(",", $destinatarios);
  12. if(!empty($destinatarios)){
  13. foreach($destinatarios as $un_destinatario){
  14. $mail->AddAddress($un_destinatario); //destinatarios
  15. }
  16. }else{
  17. return false;
  18. }
  19. if(!empty($archivos_adjuntos_ruta)){
  20. foreach($archivos_adjuntos_ruta as $archivo){
  21. $mail->AddAttachment($archivo); // attachment
  22. }
  23. }
  24. if(!empty($archivos_adjuntos_temp)){
  25. foreach($archivos_adjuntos_temp as $nombrearchivo=>$contenidoArchivo){
  26. $mail->AddStringAttachment($contenidoArchivo,$nombrearch ivo,'base64');
  27. }
  28. }
  29. $mail->Timeout = 20;
  30. if($mail->Send()) {
  31. return array(true);
  32. }else {
  33. return array(false,"Mailer Error: ".$mail->ErrorInfo);
  34. }
  35. }
y la invoco de esta manera:
Código PHP:
Ver original
  1. $archivos_adjuntos_ruta=array($path1,path2);
  2. $archivos_adjuntos_temp=array(utf8_decode($strfile PDF)=>$strContenidoPdf,utf8_decode($strNomArch)=>$ strContenidoXml);
  3. enviar_correo($Email_destinatarios_string_separado_por_comas,$email_asunto, $mail_contendio_en_html,$correo_remitente,$nombre_remitente,array(),archivos_adjuntos_temp);//los archivos estan en variables temporales
  4. enviar_correo($Email_destinatarios_string_separado_por_comas,$email_asunto, $mail_contendio_en_html,$correo_remitente,$nombre_remitente,$archivos_adjuntos_ruta,array()) ;//los archivos estan en rutas en disco
  5. enviar_correo($Email_destinatarios_string_separado_por_comas,$email_asunto, $mail_contendio_en_html,$correo_remitente,$nombre_remitente,$archivos_adjuntos_ruta,archivos _adjuntos_temp);//ambas opciones al mismo tiempo

Etiquetas: php+base+de+datos, phpmailer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:27.