Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Problema al dar formato HTML a emails desde PHP

Estas en el tema de Problema al dar formato HTML a emails desde PHP en el foro de WordPress en Foros del Web. Hola, Estoy usando un plugin en Wordpress para el formulario de contacto. Quiero que el email llegue en HTML, pero falla algo y aparece en ...
  #1 (permalink)  
Antiguo 09/01/2013, 14:43
 
Fecha de Ingreso: febrero-2012
Ubicación: Granada/Madrid
Mensajes: 183
Antigüedad: 12 años, 2 meses
Puntos: 8
Problema al dar formato HTML a emails desde PHP

Hola,

Estoy usando un plugin en Wordpress para el formulario de contacto. Quiero que el email llegue en HTML, pero falla algo y aparece en un formato raro. No pilla bien los enlaces.

En el código tengo esto:

Código HTML:
Mensaje enviado desde <a href="http://vendoandroid.com" target="_blank"><strong>VendoAndroid.com</strong></a> 
Pero en el email llega así:



Pilla el enlace, pero corta el código. El PHP que tengo es este:

Código PHP:
// Types
                
if ($field['type']) :
                    switch (
$field['type']) :
                        case 
"email" :
                            if(!
is_email($posted[$field['name']])) $error .= __('<li>Dirección de email incorrecta</li>','jigowatt');
                            
//$headers = "From: ".$posted[$field['name']]."\r\n\\";
                            //$headers .= "Reply-To: [email protected]\r\n\\";
                            // To send HTML mail, the Content-type header must be set
                            
$headers  'MIME-Version: 1.0' "\r\n";
                            
$headers .= 'Content-type: text/html; charset=utf-8' "\r\n";
                            
                            
// Additional headers. Añadido: Para que no llegue como SPAM, el mail tiene que ser el mismo que tenemos
                            // en el plugin WP SMTP para que autentique
                            
$mail_interesado $posted[$field['name']];
                            
$headers .= 'From: VendoAndroid <[email protected]>' "\r\n";
                            
$headers .= 'Reply-to: '.$mail_interesado.'' "\r\n";
                            
                            
$address get_the_author_meta('user_email'$author_id);
                            
                        break;
                    endswitch;
                endif;
            endif;

        endforeach;

        
$posted array_map('clean_var'$posted);

        
// Captcha
        
if ( isset($_POST['jigowatt_image_captcha']) ) :

            if (isset(
$_POST['jigowatt_image_captcha'])) :
                
$posted_verify   trim(stripslashes($_POST['jigowatt_image_captcha']));
                   
$posted_verify   md5($posted_verify);
               else :
                   
$posted_verify '';
               endif;

            
$session_verify $_SESSION['verify'];

            if (empty(
$session_verify)) $session_verify $_COOKIE['verify'];

            if(
$session_verify != $posted_verify) {
                
$error .= __('<li>Código antispam incorrecto</li>','jigowatt');
            }

        endif;
        
        
        if(
$error != '') {
            echo 
'<div class="error_message">'.__('¡Atención! Algo falla:','jigowatt').'';
            echo 
'<ul class="error_messages">' $error '</ul>';
            echo 
'</div>';

        } else {

        
$post_tmp get_post($_REQUEST['current_post_id']);
        
$author_id $post_tmp->post_author;
        
$address get_the_author_meta('user_email'$author_id);

        
$e_subject __('Alguien se ha interesado por tu anuncio en VendoAndroid','jigowatt');

        
// Advanced Configuration Option.
        // You can change this if you feel that you need to.
        // Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.

        
$msg  __('¡Hola! Un usuario de VendoAndroid se ha interesado en tu anuncio:'). PHP_EOL PHP_EOL;
        
$msg .= __('<a href="'.get_permalink($post_tmp).'">Título:'.get_the_title($post_tmp).' target="_blank"</a>') . PHP_EOL PHP_EOL;
        
$msg .= implode(PHP_EOL$comments) . PHP_EOL PHP_EOL;
        
$msg .= "-------------------------------------------------------------------------------------------\r\n";
        
$msg .= 'Mensaje enviado desde <a href="http://vendoandroid.com" target="_blank"><strong>VendoAndroid.com</strong></a>';

        
$msg wordwrap$msg70 ); 
Aunque en el header tengo esto:

Código PHP:
$headers  'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n"
El código del email muestra text/plain.

¿Alguna idea?

Gracias
__________________
¿Pensando en vender o comprar un Android? Pásate por VendoAndroid y échame una mano :-)
  #2 (permalink)  
Antiguo 09/01/2013, 14:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema al dar formato HTML a emails desde PHP

Pues si está curioso, posiblemente es el cliente de correo el que bloquea el HTML.

Intenta con una librería profesional como PHPMailer, igual y te va mejor.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/01/2013, 14:54
 
Fecha de Ingreso: febrero-2012
Ubicación: Granada/Madrid
Mensajes: 183
Antigüedad: 12 años, 2 meses
Puntos: 8
Respuesta: Problema al dar formato HTML a emails desde PHP

La cosa es que ocurre en la versión web de Gmail también, así que me da que no es del cliente. Y para colmo, acabo de añadir un plugin que da formato al mail y este plugin añade un enlace al final del email que SÍ se muestra correctamente:



Por cierto, el plugin ya usa PHPmailer :-/

From: VendoAndroid
Subject: Alguien se ha interesado por tu anuncio en VendoAndroid
Message-ID: <[email protected] >
X-Priority: 3
X-Mailer: PHPMailer 5.2.1 (http://code.google.com/a/apache-extras.org/p/phpmailer/)
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/html; charset="UTF-8"
__________________
¿Pensando en vender o comprar un Android? Pásate por VendoAndroid y échame una mano :-)
  #4 (permalink)  
Antiguo 09/01/2013, 19:58
Avatar de ramoncito  
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 224
Antigüedad: 21 años, 2 meses
Puntos: 10
Respuesta: Problema al dar formato HTML a emails desde PHP

Yo el plugin que utilizo y no tengo ningún problema es: http://wordpress.org/extend/plugins/contact-form-7/ y funciona perfect.

Y te evitas ese trabajo de construir el html del correo tu. El plugin lo hace solo.

Saludos,
__________________
:pensando: Ramon Martinez... Chile :adios:
  #5 (permalink)  
Antiguo 10/01/2013, 08:48
 
Fecha de Ingreso: febrero-2012
Ubicación: Granada/Madrid
Mensajes: 183
Antigüedad: 12 años, 2 meses
Puntos: 8
Respuesta: Problema al dar formato HTML a emails desde PHP

Gracias. Ese plugin lo estuvimos mirando, pero lo desechamos en su momento (en mala hora!!) porque no podíamos modificarlo para que el destinatario sea el autor del artículo. Lo acabo de instalar a ver si ahora puedo modificar el $address para meterle la dirección de email del perfil del autor (el formulario de contacto va en cada post).

Saludos!

Actualizo: Sí que e puede meter la dirección de email del autor del post, pero el plugin me da fallos. Ains, estoy gafado :-/
__________________
¿Pensando en vender o comprar un Android? Pásate por VendoAndroid y échame una mano :-)

Última edición por MarceFX; 10/01/2013 a las 09:57
  #6 (permalink)  
Antiguo 10/01/2013, 12:04
Avatar de ramoncito  
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 224
Antigüedad: 21 años, 2 meses
Puntos: 10
Respuesta: Problema al dar formato HTML a emails desde PHP

Que fallos te da el plugin?
__________________
:pensando: Ramon Martinez... Chile :adios:
  #7 (permalink)  
Antiguo 10/01/2013, 12:11
 
Fecha de Ingreso: febrero-2012
Ubicación: Granada/Madrid
Mensajes: 183
Antigüedad: 12 años, 2 meses
Puntos: 8
Respuesta: Problema al dar formato HTML a emails desde PHP

Pues el, por lo que veo, famoso "Failed to send your message":

http://www.gravitationalfx.com/fixin...message-error/

He leído y releído en el foro de soporte y no consigo solucionarlo. Tengo activo el plugin para enviar vía SMTP funcionando correctamente, con el puerto 465 abierto y el plugin aparentemente bien configurado.

La cosa es que suele enviar bien, pero de vez en cuando falla y aparece ese mensaje. Le vuelves a dar a enviar y lo envía. Es muy raro, pero no puedo permitirme el riesgo de que falle en el portal para el que lo estoy implementando.

Gracias!
__________________
¿Pensando en vender o comprar un Android? Pásate por VendoAndroid y échame una mano :-)
  #8 (permalink)  
Antiguo 10/01/2013, 19:34
Avatar de ramoncito  
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 224
Antigüedad: 21 años, 2 meses
Puntos: 10
Respuesta: Problema al dar formato HTML a emails desde PHP

Entonces, tienes una restricción en tu servidor para enviar correos. ¿Puedes averiguar eso?
__________________
:pensando: Ramon Martinez... Chile :adios:

Etiquetas: email, html, php
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 11:23.