Foros del Web » Programando para Internet » PHP »

Formulario que no funciona en Outlook

Estas en el tema de Formulario que no funciona en Outlook en el foro de PHP en Foros del Web. Hola a todos. Estoy un poco pez en esto del PHP, he estado buscando en este foro y en otros similares y no he dado ...
  #1 (permalink)  
Antiguo 24/11/2009, 00:45
 
Fecha de Ingreso: noviembre-2009
Mensajes: 29
Antigüedad: 15 años
Puntos: 1
Formulario que no funciona en Outlook

Hola a todos. Estoy un poco pez en esto del PHP, he estado buscando en este foro y en otros similares y no he dado con una solución, estoy desperado. Tengo un formulario PHP que recibe variables desde un flash. El caso es que funciona perfectamente si se visualizan los correos en webmail, pero cuando se trata del Outlook, si hay eñes y tildes de por medio, aparecen caracteres raros, pero sólo en el asunto, ya que el cuerpo del mensaje se muestra correctamente. Agradecería mucho cualquier ayuda. Os dejo el código:

<?php

$email_to = "miemail";
$bounce_email = "miemail";
$reply_to = $_POST['email'];

$email_from = $_POST['email']; // Email del remitente
$email_subject = $_POST['asunto']; // Asunto del mail
$email_txt = "<p>" . $_POST['comentarios'] . "</p><p>" . $_POST['nombre'] . "</p>"; // Texto en el cuerpo del mensaje

$headers = "From: $email_from \n";
$headers .= "Reply-To: $reply_to \n";
$headers .= "X-Mailer:PHP/".phpversion()."\n";
$headers .= "Mime-Version: 1.0\n";
$headers .= "Content-Type: text/html; charset=utf-8 \r\n\n";

// Mostrando el texto en el cuerpo del mensaje

$email_message .= "$email_txt\n";

// Enviando el mail///////////////////////////////////////////////////////////////////////////
$ok = mail($email_to, utf8_decode($email_subject), $email_message, $headers);

?>
  #2 (permalink)  
Antiguo 24/11/2009, 01:27
 
Fecha de Ingreso: enero-2008
Mensajes: 43
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Formulario que no funciona en Outlook

te fijaste mb_send_mail()?
  #3 (permalink)  
Antiguo 24/11/2009, 01:34
 
Fecha de Ingreso: noviembre-2009
Mensajes: 29
Antigüedad: 15 años
Puntos: 1
Respuesta: Formulario que no funciona en Outlook

Hola Mogk. Perdona mi ignorancia. ¿Esa función que me indicas se usa igual que la función mail?
  #4 (permalink)  
Antiguo 24/11/2009, 03:14
 
Fecha de Ingreso: septiembre-2009
Mensajes: 81
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Formulario que no funciona en Outlook

Cita:
Iniciado por SBeto Ver Mensaje
Hola Mogk. Perdona mi ignorancia. ¿Esa función que me indicas se usa igual que la función mail?
Mirate el manual:
http://php.net/manual/en/function.mb-send-mail.php
  #5 (permalink)  
Antiguo 24/11/2009, 05:40
 
Fecha de Ingreso: noviembre-2009
Mensajes: 29
Antigüedad: 15 años
Puntos: 1
Respuesta: Formulario que no funciona en Outlook

Gracias Catalon. He echado un vistazo al manual y por lo que parece, la función mb-send-mail no funciona bien si se quieren enviar archivos adjuntos. No sé si estoy en lo cierto. Pero el caso es que si esa opción no está disponible tendré que hacerlo de otra forma.
  #6 (permalink)  
Antiguo 24/11/2009, 05:55
 
Fecha de Ingreso: septiembre-2009
Mensajes: 81
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Formulario que no funciona en Outlook

Te aconsejo k uses la clase PHPMailer, esta totalmente optimizada y no creo k te de problemas.
  #7 (permalink)  
Antiguo 24/11/2009, 06:44
 
Fecha de Ingreso: noviembre-2009
Mensajes: 29
Antigüedad: 15 años
Puntos: 1
Respuesta: Formulario que no funciona en Outlook

Ok, probaré a ver. Gracias por tu ayuda.
  #8 (permalink)  
Antiguo 24/11/2009, 09:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Formulario que no funciona en Outlook

Si te fijas tu estas enviando el mail con el encoding utf8, pero usas utf8_decode sobre el texto, eso hace que te de ese error.

Saludos.
  #9 (permalink)  
Antiguo 25/11/2009, 12:24
 
Fecha de Ingreso: noviembre-2009
Mensajes: 29
Antigüedad: 15 años
Puntos: 1
De acuerdo Respuesta: Formulario que no funciona en Outlook

Hola. Después de revisar el manual PHP y coger un poquito de aquí y otro poquito de allá, conseguí que funcionara este dichoso formulario PHP. Funciona en Outlook, webmail y hotmail, pasa correctamente acentos y eñes y además sirve para enviar archivos adjuntos. Es muy probable que haya cosas que esten hechas en plan chapuza y que muchos de vosotros sabréis optimizar, pero yo personalmente prefiero no tocarlo que estoy muy pez en PHP (ahora que ya me funciona el jodio...). Muchas gracias a los foreros que me han ayudado con esto. Dejo el código:

<?php

$boundary='didondinaditondelosdudosdodudundodudind on';

$email_to = "miemail";
$bounce_email = "miemail";
$reply_to = $_POST['email'];

$email_from = $_POST['email']; // Email del remitente
$email_subject = $_POST['asunto']; // Asunto del mail
$email_txt = "<p>" . $_POST['comentarios'] . "</p><p>" . $_POST['codweb'] . "</p>"; // Texto en el cuerpo del mensaje

$headers = "MIME-Version: 1.0 \n" ;
$headers .= "From: " . "" . mb_encode_mimeheader (mb_convert_encoding($email_from,"utf-8","AUTO")) . "" . "<".$email_from."> \n";
$headers .= "Reply-To: " . "" . mb_encode_mimeheader (mb_convert_encoding($email_from,"utf-8","AUTO")) ."" . "<".$email_from."> \n";
$headers .= "X-Mailer:PHP/".phpversion()."\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n\n";
$headers .= "Content-Type: text/html; charset=utf-8 \r\n\n";

// Mostrando el cuerpo del mensaje////////////////////////////////////////////////
$email_message = "--". $boundary ."\n"; //Apertura de frontera----------------------------------
$email_message .= "Content-Type: text/html; charset=utf-8 \r\n\n";
$email_message .= "$email_txt\n";
$email_message = mb_convert_encoding($email_message, "utf-8","AUTO");

// Leyendo el archivo para adjuntar/////////////////////////////////////////////////////////////
$newfile = $_POST['adjunto'];
$fileatt = "files/" . $newfile;
$fileatt_type = "application/octet-stream";
$fileatt_name = $_POST['adjunto'];

$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);

$data = chunk_split(base64_encode($data));

// Adjuntando archivo///////////////////////////////////////////////////////////////////////////

if ($fileatt_name == "") {
$email_message .= "";
} else {
$email_message = $email_message . "--" .$boundary. "\n";
$email_message .= "Content-Type: {$fileatt_type}; name=\"{$fileatt_name}\"\n";
$email_message .= "Content-Disposition: attachment; filename=\"{$fileatt_name}\"\n";
$email_message .= "Content-Transfer-Encoding: base64\n\n";
$email_message .= $data . "\n\n";
}

// Mostrando el asunto del mensaje////////////////////////////////////////////////////////////
$email_subject = mb_convert_encoding($email_subject, "utf-8","AUTO");
$email_subject = mb_encode_mimeheader($email_subject);

// Enviando el mail///////////////////////////////////////////////////////////////////////////
$ok = mail($email_to, $email_subject, $email_message, $headers);

?>

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:00.