Foros del Web » Programando para Internet » PHP »

Problemas con PHPMailer y codificación

Estas en el tema de Problemas con PHPMailer y codificación en el foro de PHP en Foros del Web. Buenas tardes. Tengo un problema desde hace varios días usando la clase PHPMailer y no encuentro la solución, por eso estoy recurriendo a ustedes, para ...
  #1 (permalink)  
Antiguo 25/04/2013, 17:35
 
Fecha de Ingreso: abril-2013
Mensajes: 6
Antigüedad: 11 años
Puntos: 1
Problemas con PHPMailer y codificación

Buenas tardes.
Tengo un problema desde hace varios días usando la clase PHPMailer y no encuentro la solución, por eso estoy recurriendo a ustedes, para ver si alguien podría ayudarme con esto.

En el sistema que estoy trabajando actualmente tengo un módulo que en sí es un cron que envía correos para avisar que se está a punto de caducar la vigencia de su producto.
Son correos másivos que se envían usando un Cron, o más bien una tarea programada, ya que el servidor es Windows, pero eso no influye en lo que deseo preguntar.

Entonces al momento de enviar y ver los títulos de los enviados:
Cita:
XXXXX: Un producto tuyo está a punto de caducar
XXXXX: Un producto tuyo está a punto de cadu= ?iso-8859-1?Q?car?=
XXXXX: Un producto tuyo está a punto de caducar
XXXXX: Un producto tuyo está a punto de cadu= ?iso-8859-1?Q?car?=
Como ven, algunos de los enviados muestran este problema de codificación en el título, pero sólo algunos y esto es aleatorio, a veces muestra dos bien y uno mal; cinco bien, dos mal y tres bien; o de otras formas diversas.

No sé realmente a que se deba, la codificación que manejo en el archivo es ISO-8859-1, la misma que en la función que envía el email.
He de decir que el contenido llega bien codificado independientemente de si el título está bien codificado o no.

Dejo el código para que puedan ver (reducido para que sea más corto de leer):
Código PHP:
    session_start();
    
header('Content-Type: text/html; charset=iso-8859-1');
    
/* Aquí están las inclusiones de archivos, no es necesario mostrarlas*/
    
    
$main = new main(array_merge($_GET$_POST));
    
    
/* Buscamos productos a punto de caducar */
    
$sql "
        SELECT id, tituloproducto, idusuarioproducto
        FROM productos 
        WHERE publicarproducto = '1' AND 
        (statusproducto = 3 OR statusproducto = 6 OR statusproducto = 9) AND 
        limitepublicacionesproducto >= '" 
date("Y-m-d") . "' AND 
        DATE_SUB(limitepublicacionesproducto , INTERVAL 5 DAY) = '" 
date("Y-m-d") . "'
    "
;
    
$query = @mysql_query($sql);
    if(@
mysql_num_rows($query) > 0){
        
/* Recorremos productos */
        
while($row = @mysql_fetch_assoc($query)){
            
$usuario = new usuario($row["idusuarioproducto"]);
            
            
$subject $main->getConf("tituloCaducar");
            
$body $main->getConf("textoCaducar");
            
            
$main->email($usuario->getData("emailusuario"), $usuario->getData("nombreusuario"), $subject$main->htmlButTags($body));
        }
    }
    
    return; 
Y aquí están las configuraciones dentro de la clase que envía el correo (Reduciendolo nuevamente para facilitar la lectura):
Código PHP:
    $mail = new PHPMailer();
    
    
$mail->IsSMTP();
    
$mail->Host "Host";
    
$mail->Port "Port";
    
$mail->SMTPAuth true
    
$mail->Username "Nombre de usuario";
    
$mail->Password "Contraseña del usuario";

    
$mail->CharSet 'iso-8859-1';
    
$mail->From "From";
    
$mail->FromName "FromName";
    
$mail->AddAddress($to$toname); 
        
    
$mail->IsHTML(true);
    
$mail->Subject $subject;
    
    
$mail->Body $body;
        
    if(!
$mail->Send()) {
        return 
false;
    } else {
        return 
true;
    } 
Bueno, espero alguien me pueda ayudar con esto.

Nos leemos.
  #2 (permalink)  
Antiguo 29/04/2013, 08:30
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problemas con PHPMailer y codificación

Comprueba la codificación de la DB. Salu2
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: html, mysql, phpmailer, select, sql
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 09:43.