Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHPMAILER: problema en body agrega espacios y signos '+'

Estas en el tema de PHPMAILER: problema en body agrega espacios y signos '+' en el foro de PHP en Foros del Web. Bueno les expongo mi problema. Utilizo phpmailer para enviar correos. En el cuerpo del mensaje pongo codigo html con unos links para que se carguen ...
  #1 (permalink)  
Antiguo 01/04/2013, 04:39
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 11 años, 7 meses
Puntos: 4
PHPMAILER: problema en body agrega espacios y signos '+'

Bueno les expongo mi problema.

Utilizo phpmailer para enviar correos.

En el cuerpo del mensaje pongo codigo html con unos links para que se carguen unas imagenes que tengo en mi servidor, hasta aqui todo perfecto.

El problema es que en el cuerpo del mensaje, hay veces que aparecen signos '+' o algun espacio. Y si pillan en medio de mi url, no carga la imagen (logicamente).

Esto lo vi viendo el codigo fuente de la imagen que no se mostraba, quedando algo asi: www.prueba.es/imag+en/1.jpg.

El cuerpo del mensaje esta bien creado, porque justo antes de enviar el mail, lo muestro por pantalla, y me salen todas las imagenes y el texto sin ningun tipo de error.

Aqui pongo la configuracion que utilizo, pero el mail, llegar llega y lo veo "casi" bien, salvando que se me rompe algun link que otro.

$mailenvio = '[email protected]';



$mail->From = "[email protected]";
$mail->Host = "prueba.es";
$mail->Username = "[email protected]";
$mail->Password = "pass";
$mail->SMTPAuth = true;
$mail->IsHTML(true);
$mail->SMTPSecure = "tls";
$mail->Port=587;
$mail->Subject="Solicitud";
$mail->FromName = "Prueba Web";
$mail->Timeout=30;
$mail->AddAddress($mailenvio);
$mail->Body = $cuerpo;
$mail->Send();
$mail->ClearAddresses();
  #2 (permalink)  
Antiguo 01/04/2013, 09:54
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

si lo que sucede es que los link te llegan www.prueba.es/imag+en/1.jpg. esto se debe a que las imagenes en tu server tienen espacios en blanco en el nombre por lo que te recomiendo que los cambies ya que el navegador puede hacer esfuerzo en interpretarte esos espacios o caracteres especiales pero el visor de correo posiblemente no te lo interprete...
  #3 (permalink)  
Antiguo 01/04/2013, 10:59
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 11 años, 7 meses
Puntos: 4
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

Hola, gracias por responder.

Las imagenes del servidor no tienen ningun espacio en blanco, ni caracteres especiales, ni siquiera un triste guion.

Y no es por el tema de la imagen en si, ya que, ordeno la lista y siempre falla la segunda imagen. Y si intento acceder a ese link roto, del tipo, www.prueba.es/im+ages/1.jpg (quitando el '+'), si que veo la imagen.

¿Podria ser por el largo del body? ¿Deberia poner \n\r o algo similar para decirle que termina el renglon? Yo creo que no, pero la verdad no se que pensar.
  #4 (permalink)  
Antiguo 01/04/2013, 11:14
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

mmm no termino de entender tu problema.

Las imagenes te cargan sin problema??
El problema es que si le doy click a algun link no funciona??
Te muestra caracteres extraños en el texto del mensaje?
Te muestra descuadrado el mensaje?
  #5 (permalink)  
Antiguo 01/04/2013, 11:33
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 11 años, 7 meses
Puntos: 4
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

Tengo algo asi,


asort ($total);

$tabla="<p> Provincia <b> $provincia</b><br />";
$tabla .= '<table border="0"><tr><th>Compa&ntilde;ia</th><th>Precio</th></tr>';

foreach ($total as $indice => $valor){
$tabla .= "<tr><td><img src='http://www.prueba.es/images/$indice.jpg' alt='logo $indice' /></td><td>$valor &euro;</td> </tr>";

}
$tabla .= '</table>';


$cuerpo = '<html>';
$cuerpo .= '<body style="background-color:#ffffff">';
$cuerpo .= $tabla.' <br />';
$cuerpo .="</body></html>";


Por navegador, antes de hacer $mail->Send();, veo el cuerpo correctamente con todas sus imagenes, pero cuando abro el correo que me llega, la segunda imagen no aparece,sale el "ALT" de la imagen porque en su link aparece un signo '+' .

Lo que no tengo ni idea, es el porque de ese signo.
  #6 (permalink)  
Antiguo 01/04/2013, 11:37
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

Prueba con este cambio en el foreach

Código PHP:
Ver original
  1. foreach ($total as $indice => $valor){
  2. $tabla .= "<tr><td><img src='http://www.prueba.es/images/".$indice.".jpg' alt='logo ".$indice."' /></td><td>".$valor." &euro;</td></tr>";
  3. }
  #7 (permalink)  
Antiguo 01/04/2013, 11:52
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 11 años, 7 meses
Puntos: 4
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

No, sigue fallando. Tambien probe de ponerlo asi:


Código PHP:
Ver original
  1. $tabla .= '<tr><td><img src="http://www.prueba.es/images/'.$indice.'.jpg" alt="logo '.$indice.'" /></td><td>'.$valor.' &euro; / $indice</td> </tr>';

Con las comillas al reves, porque lei algo que estrictamente hablando el codigo html debe llevar las comillas dobles. Pero nada, y solo falla con la segunda imagen, para todas las demas, me crea la tabla sin incidencias
  #8 (permalink)  
Antiguo 01/04/2013, 11:56
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

Mira pero entonces el problema no es del codigo PHP el problema parece ser el nombre de esa imagen o alguna información relacionada a ella porque si las demas te las muestra sin problema no es PHP...

Si fuera PHP entonces no sirviera nada pero si todas las demas las ves sin problemas entonces el problema ya no es php...
  #9 (permalink)  
Antiguo 01/04/2013, 12:04
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 11 años, 7 meses
Puntos: 4
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

Ese es mi mayor problema, que no se realmente el porque de mi problema.

Porque tampoco es problema de la imagen en si, ya que tengo esta linea,

Código PHP:
Ver original
  1. asort ($total);

y la imagen que falla no siempre es la misma, sino que es siempre la segunda que se queda en esa lista.
  #10 (permalink)  
Antiguo 01/04/2013, 12:08
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

mmmm ok y si imprimes el arreglo para la como va la informacion??? solo para descartar que en la posicion 1 todo valla en orden...

algo asi

Código PHP:
Ver original
  1. print_r($total);
  #11 (permalink)  
Antiguo 01/04/2013, 12:17
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 11 años, 7 meses
Puntos: 4
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

El tema del array, lo tengo claro que funciona, toda esa informacion antes de enviarla por mail, la muestro por pantalla, y salen todos.

Asi que pienso me falta configurar algo mas en el objeto de phpmailer.

La cuenta real que utilizo es de gmail.
  #12 (permalink)  
Antiguo 01/04/2013, 13:26
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

mira no hay nada mas que configurarle ahi se me hace que es problema de como se arma el html o algo asi, porque no veo mas explicacion
  #13 (permalink)  
Antiguo 02/04/2013, 01:32
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 11 años, 7 meses
Puntos: 4
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

Muchas gracias Alex1084 por tus respuestas y tu tiempo. Con el como se arma el html te refieres, al body que envio?

Es muy parecido a lo que puse, un poco mas largo, pero es texto con codigo html, y tengo revisado que se cierran todas las etiquetas.

Tambien me actualize las clase phpmailer por si era cuestion de algun bug.

Asi que sigo abierto a cualquier sugerencia que me encargare de probar lo que sea :)
  #14 (permalink)  
Antiguo 09/04/2013, 05:49
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 11 años, 7 meses
Puntos: 4
Respuesta: PHPMAILER: problema en body agrega espacios y signos '+'

Bueno, por si a alguno le paso lo mismo que a mi. Les cuento cual era mi problema. Las imagenes y demas no tenian nada que ver, resulta que cada linea de mi codigo era demasiada larga, asi que con un salto de linea en el codigo que realiza el php, se me soluciono el problema

codigo original:
Código PHP:
Ver original
  1. foreach ($total as $indice => $valor){
  2.     $tabla .= "<tr><td><img src='http://www.prueba.es/images/".$indice.".jpg' alt='logo ".$indice."' /></td><td>".$valor." &euro;</td></tr>";
  3.     }

codigo cambiado:
Código PHP:
Ver original
  1. foreach ($total as $indice => $valor){
  2.     $tabla .= "<tr><td><img src='http://www.prueba.es/images/".$indice.".jpg' alt='logo ".$indice."' /></td><td>".$valor." &euro;</td></tr>
  3. ";
  4.     }

La diferencia es que cuando cierro el tr le meto un salto de linea :)

Etiquetas: 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 22:17.