Foros del Web » Programando para Internet » PHP »

Mails y tablas locas

Estas en el tema de Mails y tablas locas en el foro de PHP en Foros del Web. Hola, me está ocurriendo lo siguiente. Estoy mandando mails, con el tradicion phpmailer. Parte del contenido consiste en una concatenación de textos y variables. En ...
  #1 (permalink)  
Antiguo 04/01/2010, 10:05
 
Fecha de Ingreso: febrero-2009
Ubicación: Buenos Aires
Mensajes: 42
Antigüedad: 15 años, 3 meses
Puntos: 0
Mails y tablas locas

Hola, me está ocurriendo lo siguiente.

Estoy mandando mails, con el tradicion phpmailer. Parte del contenido consiste en una concatenación de textos y variables. En un momento imprimo una tabla.

En aproximadamente el 15% de los mails, una de las celdas de la tabla "salta" hacia afuera.

algo así:

c ---> celda que saltó
a b c d e
a b c d e
a b d e
a b c d e

A veces ocurre con tag también:

<td>b ---> celda que saltó
a b c d e
a c d e
a b c d e
a b c d e

Alguien tiene idea que demonios pasa?!

Gracias
  #2 (permalink)  
Antiguo 04/01/2010, 10:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Mails y tablas locas

Cita:
Iniciado por Lauferin Ver Mensaje
[...] Alguien tiene idea que demonios pasa?! [...]
diablos!! ...en el foro se agotaron los adivinos....

pues con solo decir lo que sucede, ¿crees que podemos averiguar que haces mal en tu código??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/01/2010, 13:29
Avatar de LuZBinG  
Fecha de Ingreso: enero-2008
Mensajes: 407
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: Mails y tablas locas

si te refieres a esto:

$cuerpo.="<table><td></td></table>";etc.......

al momento de mandar el email

el problema puede ser que no estas cerrando un td o tr

salu2
__________________
LuZbIng
  #4 (permalink)  
Antiguo 04/01/2010, 15:03
 
Fecha de Ingreso: febrero-2009
Ubicación: Buenos Aires
Mensajes: 42
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Mails y tablas locas

El código no lo puse porque está bien, el error es completamente aleatorio, sin duda.

Si fuera lo de <table> daría mal siempre.. pero se trata de otra cosa.


Acá escribo (una parte):

Código PHP:
    for ($i=0;$i<35;$i++)
        {
        if (isset(
$_COOKIE["sigmodsig".$i]))
            {
            
$cookiesep split("zyz",$_COOKIE["sigmodsig".$i]);
            for (
$ii=0;$ii<2;$ii++)
              {
              if(
$cookiesep[$ii]!="" && $cookiesep[$ii]!=0)
                {
                
$cookiediv split("yxy",$cookiesep[$ii]);
                if (
$cookiediv[0]!=&& $cookiediv[0]!="")
                    {
                    
$sql "select nombre, barra, precio" $modoprecio " as precio from sig_productos where codigo = " $cookiediv[0] . " ";
                    
$rs odbc_exec($conexion$sql);
                    
$row odbc_fetch_array($rs);
                    
$nombre $row['nombre'];
                    
$barra $row['barra'];
                    
$precio $row['precio']*$cookiediv[3];
                    
$total $total $precio;
                    
$sql "select nombre from sig_colores where codigo = " $cookiediv[1] . " ";
                    
$rs odbc_exec($conexion$sql);
                    
$row odbc_fetch_array($rs);
                    
$color $row['nombre'];
                    
$sql "select nombre from sig_talles where codigo = " $cookiediv[2] . " ";
                    
$rs odbc_exec($conexion$sql);
                    
$row odbc_fetch_array($rs);
                    
$talle $row['nombre'];
                    
$bodyayuda $bodyayuda '<tr><td style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica">'.$nombre.'</td>';
                    
$bodyayuda $bodyayuda '<td style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica">'.$barra.'</td>';
                    
$bodyayuda $bodyayuda '<td style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica">'.$color.'</td>';
                    
$bodyayuda $bodyayuda '<td style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica">'.$talle.'</td>';
                    
$bodyayuda $bodyayuda '<td style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica">'.$cookiediv[3].'</td>';
                    
$bodyayuda $bodyayuda '<td style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica">$'.$precio.'</td></tr>';
                    }
                }
              }
            }
        }
    
$sql "select max(codigo) as maxcodigo from sig_detalle where pedido = " $codigo " ";
    
$rs odbc_exec($conexion$sql);
    
$row odbc_fetch_array($rs);
    echo 
"q" "zsuperdivisionz" $row['maxcodigo'] . "zsuperdivisionz" $codigo;
    
$pedido $row['maxcodigo'];
    
$detalle $codigo;

    require(
"c:\php\includes\class.phpmailer.php");
    
$mail = new PHPMailer();

    
$toaddress $Email;
    
$subject "Pedido de compra";

    
$totaltotal $total+$envprecio;
    
$body '<table style="margin-top:6px;border-color:#0000DD;border-width:9px;border-style:solid;" cellspacing=9><tr><td>';
    
$body $body '<center><h1>¡Gracias por tu compra!</h1></center><br>';
    
$body $body '<p style="color:#56489F;line-height:17px;font-size:15px;"><b>Recibimos tu pedido. Te enviamos el detalle y el número de cuenta para realizar el pago de la mercadería.</b></p>';
    
$body $body '<p style="color:#56489F;line-height:17px;font-size:15px;">' $textocuenta '<br>Número de pedido: web ' . ($codigo+275) . '</p>';
    
$body $body '<br><p style="color:#56489F;line-height:17px;font-size:15px;">Detalle de la compra</p><br>';
    
$body $body '<table cellspacing=9>';
    
$body $body '<tr><td style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica"><u>Nombre de artículo</u>&nbsp;</td>';
    
$body $body '<td style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica"><u>Código</u>&nbsp;&nbsp;</td>';
    
$body $body '<td style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica"><u>Color</u>&nbsp;&nbsp;</td>';
    
$body $body '<td style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica"><u>Talle</u>&nbsp;&nbsp;</td>';
    
$body $body '<td style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica"><u>Cantidad</u></td>';
    
$body $body '<td style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica"><u>Precio</u></td></tr>';
    
$body $body $bodyayuda;
    
$body $body '<tr><td colspan=6 align=right style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica"><b>Subtotal</b>: $'.$total.'</td></tr>';
    
$body $body '<tr><td colspan=5 style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica">'.$envdescripcion.'</td><td align=right style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica"> $'.number_format($envprecio,2).'</td></tr>';
    
$body $body '<tr><td colspan=6 align=right style="color:#56489F;line-height:17px;font-size:15px;font-family:helvetica"><b>Total</b>: $'.number_format($total+$envprecio,2).'</td></tr>';
    
$body $body '</table>';
    
$body $body '<td></tr></table>';
    
$rplyto "[email protected]";
    
$msgbody $body;

    
$mail->IsSMTP();
    
$mail->Host $mailhost;
    
$mail->SMTPAuth true;
    
$mail->Username $fromaddress;
    
$mail->Password $frompwd;
    
$mail->From $fromaddress;
    
$mail->FromName $fromname;
    
$mail->AddReplyTo($rplyto); 
    
$mail->AddAddress($toaddress); 
    
$mail->IsHTML(true);
    
$mail->Subject $subject;
    
$mail->Body $msgbody
Gracias
  #5 (permalink)  
Antiguo 04/01/2010, 15:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Mails y tablas locas

bien, confío en que tu código esta perfecto!!

ahora puedes mostrar el código HTML generado por tu script??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 04/01/2010, 18:49
 
Fecha de Ingreso: febrero-2009
Ubicación: Buenos Aires
Mensajes: 42
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Mails y tablas locas

La verdad es que, recién me avivaste de que se puede revisar el código html de un Mail, cosa que no había intentado. Encontré, el problema, pero no sé como solucionarlo:

(en el bloc de notas, .txt) me lo muestra así:

Código HTML:
 <u>Precio</u></td></tr><tr><t
d
style="color:#56489F;line-height: ....
o sea, me cortó el <td en dos!!

¿Por qué hace eso?


Gracias por la paciencia!!
  #7 (permalink)  
Antiguo 04/01/2010, 19:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Mails y tablas locas

tengo dos ideas:

- los atributos (colspan y align) después de la linea del Precio, abajo de la variable $bodyayuda no son válidos... algo puede suceder ahí, debes corregirlos

- donde "rellenas" la variable $bodyayuda intenta cambiar un poco el formato del <td/>, ejecuta de nuevo tu script y haz todo el análisis de nuevo

mínimo puedes averiguar un poco mas del posible problema... lo menciono porque no sabemos con exactitud la linea responsable, osea, la del <td/> roto
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 04/01/2010, 20:19
 
Fecha de Ingreso: febrero-2009
Ubicación: Buenos Aires
Mensajes: 42
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Mails y tablas locas

No entiendo por qué no son válidos el cospan y align... los uso para que el subtotal aparezca a la derecha en la tabla.
De todas formas, el problema no parece estar ahí.

Pero supongo que intentaré cargar todo el $bodyayuda en una línea sola, a ver si ayuda de alguna manera. Si hubiera una línea responsable sería más fácil, pero eso también es aleatorio.

En fin, muchas gracias por tu asistencia.
  #9 (permalink)  
Antiguo 04/01/2010, 20:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Mails y tablas locas

Cita:
Iniciado por Lauferin Ver Mensaje
No entiendo por qué no son válidos el cospan y align... los uso para que el subtotal aparezca a la derecha en la tabla [...]
no digo que estén mal, simplemente no son validos...

un atributo 100% correcto en HTML debe usar comillas dobles, aún si el valor no contiene espacios, o son solo números, o como sea que hayas aprendido...

así de sencillo, yo tampoco estoy seguro que ese sea el problema... pero si atiendes, posiblemente te darás una grata impresión... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 04/01/2010, 20:39
 
Fecha de Ingreso: febrero-2009
Ubicación: Buenos Aires
Mensajes: 42
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Mails y tablas locas

De acuerdo, gracias.

Sólo para agregar, fijándome un poco más, encontré que no sólo rompen los td... eso se ve fácil. También me encontré con algo así:

INTERIOR DEL PAI
S: OCA.

En ese script rompe los caracteres 3 veces, y los 3, en el .txt, coinciden en que se encuentran en la columna 991.
  #11 (permalink)  
Antiguo 04/01/2010, 20:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Mails y tablas locas

bueno, este si es un buen problema... pero tengo una idea mas:

se que el correo utiliza estilos, pero... ¿no te es posible utilizar una hoja de estilos??

o bien, intenta dejar las lineas lo mas cortas de caracteres posibles, osea, elimina por mientras todos los atributos de estilos, etc.... eso solo para saber como se comporta (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: mails, tablas
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 20:20.