Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error en acentos y ñ al recibir mail de formulario

Estas en el tema de Error en acentos y ñ al recibir mail de formulario en el foro de PHP en Foros del Web. Hola amigos, resulta que al mandar un mail desde el formulario de mi web recibo un mail sin acentos ni ñ y con carácteres raros, ...
  #1 (permalink)  
Antiguo 21/03/2014, 08:37
Avatar de Luisa29  
Fecha de Ingreso: enero-2013
Mensajes: 193
Antigüedad: 11 años, 2 meses
Puntos: 4
Error en acentos y ñ al recibir mail de formulario

Hola amigos, resulta que al mandar un mail desde el formulario de mi web recibo un mail sin acentos ni ñ y con carácteres raros, a ver si me podéis echar una mano y dar con el fallo, aquí os dejo el código:

HTMl:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>CONTACTO</title>
<link href="estilo-pagina-css.php" rel="stylesheet" type="text/css" />
<link href="estilo.css" rel="stylesheet" type="text/css" />
<style type="text/css">
</style>
</head>
<body>
<div id="izquierda-c">
 <section class="formulario">
 <form action="contacto/formulario/contacto.php" method="post">
<label for="nombre"><span class="titulo-formulario">Formulario de contacto
    <br />
    <br />
</span>
  Nombre:</label>
 <input id="nombre" type="text" name="nombre" placeholder="Nombre y Apellido" required="" />
 <label for="email">Email:</label>
 <input id="email" type="email" name="email" placeholder="[email protected]" required="" />
 <label for="mensaje">Mensaje:</label>
 <textarea id="mensaje" name="mensaje" placeholder="Mensaje" required=""></textarea>
 <input id="submit" type="submit" name="submit" value="Enviar" />
</form>

  </section>
</div>

</body>
</html>
PHP:

Código:
<?php
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];
$para = '[email protected]';
$titulo = 'ASUNTO DEL MENSAJE';
$header = 'From: ' . $email;
$msjCorreo = "Nombre: $nombre\n E-Mail: $email\n Mensaje:\n $mensaje";
  
if ($_POST['submit']) {
if (mail($para, $titulo, $msjCorreo, $header)) {
echo "<script language='javascript'>
alert('Mensaje enviado, muchas gracias.');
window.location.href = 'http://TUSITIOWEB.COM';
</script>";
} else {
echo 'Falló el envio';
}
}
?>
CSS:

Código:
@charset "utf-8";
/* CSS Document */

label {
    display:block;
    margin-top:15px;
    letter-spacing:1px;
}
.formulario {
    display:block;
    margin:0 auto;
    width:400px;
    color: #000000;
    font-family:Arial;
}
form {
    margin:0 auto;
    width:400px;
}
 
input, textarea {
    width:380px;
    height:27px;
    background:#000000;
    border:2px solid #f6f6f6;
    padding:10px;
    margin-top:5px;
    font-size:15px;
    color:#ffffff;
}
 
textarea {
    height:150px;
}
 
#submit {
    width:85px;
    height:35px;
    border:none;
    margin-top:20px;
    cursor:pointer;
}
  #2 (permalink)  
Antiguo 21/03/2014, 08:41
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Error en acentos y ñ al recibir mail de formulario

añade los Headers a la cabecera del mail para indicarle que es UTF8 y de ser posible envíalo en formato HTML
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 21/03/2014, 08:46
Avatar de Luisa29  
Fecha de Ingreso: enero-2013
Mensajes: 193
Antigüedad: 11 años, 2 meses
Puntos: 4
Respuesta: Error en acentos y ñ al recibir mail de formulario

Cita:
Iniciado por maycolalvarez Ver Mensaje
añade los Headers a la cabecera del mail para indicarle que es UTF8 y de ser posible envíalo en formato HTML
¿Podrías indicarme los pasos a seguir?
  #4 (permalink)  
Antiguo 21/03/2014, 08:53
Avatar de Luisa29  
Fecha de Ingreso: enero-2013
Mensajes: 193
Antigüedad: 11 años, 2 meses
Puntos: 4
Respuesta: Error en acentos y ñ al recibir mail de formulario

Cita:
Iniciado por maycolalvarez Ver Mensaje
añade los Headers a la cabecera del mail para indicarle que es UTF8 y de ser posible envíalo en formato HTML
maycolalvarez te refieres a esto?

$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";

Lo he añadido al php y sigue igual.
  #5 (permalink)  
Antiguo 21/03/2014, 09:51
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Error en acentos y ñ al recibir mail de formulario

exacto, pero si aún así no basta, verifica que tu archivo esté en UTF8 sin BOM, o utiliza utf8_encode() para el texto, incluso si viene de la Base de datos, la cual debería estar en UTF8 aunque no es limitativo.

lo ideal es convertir el correo en HTML, así puedes incluir el meta de lenguaje para que los clientes de correo lo interpreten adecuadamente, no necesita ser un HTML muy elaborado.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #6 (permalink)  
Antiguo 21/03/2014, 10:17
Avatar de Luisa29  
Fecha de Ingreso: enero-2013
Mensajes: 193
Antigüedad: 11 años, 2 meses
Puntos: 4
Respuesta: Error en acentos y ñ al recibir mail de formulario

Cita:
Iniciado por maycolalvarez Ver Mensaje
exacto, pero si aún así no basta, verifica que tu archivo esté en UTF8 sin BOM, o utiliza utf8_encode() para el texto, incluso si viene de la Base de datos, la cual debería estar en UTF8 aunque no es limitativo.

lo ideal es convertir el correo en HTML, así puedes incluir el meta de lenguaje para que los clientes de correo lo interpreten adecuadamente, no necesita ser un HTML muy elaborado.
Perdona por mi ignorancia pero no entiendo donde poner cada cosa.

¿Cómo miro lo del BOM? ¿cómo y donde uso el utf8_encode() para el texto? El formulario no usa base de datos.
Y cómo podría modificar el código que he puesto para que mande como html el correo.
  #7 (permalink)  
Antiguo 21/03/2014, 10:53
Avatar de Luisa29  
Fecha de Ingreso: enero-2013
Mensajes: 193
Antigüedad: 11 años, 2 meses
Puntos: 4
Respuesta: Error en acentos y ñ al recibir mail de formulario

Solucionadooo

He cambiado esta linea y se ha arreglado todo:

if ($_POST['submit']) {
if (mail($para, $titulo, utf8_decode($msjCorreo), $header))

maycolalvarez gracias eres el mejor, a ti y a todossss !!

Etiquetas: acentos, formulario, html, mail, recibir
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 07:01.