PHP - Salto de linea al enviar un correo en formato texto

   
Vista:

Salto de linea al enviar un correo en formato texto

Publicado por Christian (5 intervenciones) el 17/09/2013 05:48:12
Hola

Quería molestarlos con un tema que no he podido solucionar, hice un formulario de contacto con codigo en un tutorial encontrado en internet, pero me pasa que al llegar al correo no me toma los <br> y recibe todo en una sola linea mas aun con los br escritos

esto es lo que llega:
Enviado desde www.mipagina.clNombre: Christian<br> nCorreo: e-mail:micorreo@gmail.com<br> nMensaje: mi mensaje es el siguiente<br> n

Formulario de Contacto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<? if (!$HTTP_POST_VARS){ ?>
<form method="post" id="contacto1">
  <label for="name">Nombre:</label><input name="name" type="text" autofocus required id="name" placeholder="Escriba aquí su nombre" tabindex="1" title="Nombre">
  <label for="email">Email:</label>
  <input name="e-mail" type="e-mail" id="e-mail" value="e-mail">
  <label for="tel">Tel:</label>
  <input type="tel" name="tel" id="tel">
  <label for="textarea">Text Area:</label>
  <textarea name="txtmessage" id="txtmessage"></textarea>
  </p><input name="enviar" type="submit" id="enviar"></form><?
}
else{
//Nota. Cuerpo o contenido del mensaje. 
$cuerpo = "Enviado desde www.mipagina.cl para cotizar";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["name"] ."<br> n";
 
$cuerpo .= "Correo: " . $HTTP_POST_VARS["e-mail"] ."<br> n";
 
$cuerpo .= "Mensaje: " . $HTTP_POST_VARS["txtmessage"] ."<br> n";
 
//Nota. Cabeceras para el env&#8730;&#8800;o en formato HTML. 
$headers = "MIME-Version: 1.0";
$headers .= "Content-type: text/html; charset=charset=UTF-8";
 
//Nota. Direcci&#8730;&#8805;n del remitente. 
$headers .= "From: " . $HTTP_POST_VARS["e-mail"] . "n";
 
//Nota. Direcci&#8730;&#8805;n de respuesta. 
$headers .= "Reply-To: " . $HTTP_POST_VARS["e-mail"] . "n";
 
//Nota. Ruta del mensaje desde origen a destino. 
$headers .= "Return-path: " . $HTTP_POST_VARS["e-mail"] . "n";
 
//Nota. Funcion Mail de PHP: 
// mail( $correoreceptor, $asunto, $mensaje, $cabeceras ); 
 
 
mail("micorreo@hotmail.com","Contacto desde www.mipagina.cl",$cuerpo,$headers);
 
 
//Confirmaci&#8730;&#8805;n de envio del mensaje. 
echo "El comentario se ha enviado con exito, te contactaremos en la brevedad!";
mail($email,$asunto,$pedido,"MIME-Version:1.0\nContent-type:text/html;charset=UTF-8\nFrom:$empresa<$correo_empresa>");
 
}
 
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Salto de linea al enviar un correo en formato texto

Publicado por xve (5513 intervenciones) el 17/09/2013 09:11:15
Hola Christian, el problema que tienes, es que envías el correo en formato texto, por lo cual no interpreta el código HTML.

Para hacer los saltos de linea en texto, tienes que utilizar \n
Si quieres hacer dos saltos de linea \n\n
Si deseas tabular es con: \t

Espero que te sirva.... coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Salto de linea al enviar un correo en formato texto

Publicado por Mari Carmen (145 intervenciones) el 17/09/2013 22:16:02
Apuntes el uso de $HTTP_POST_VARS esta anticuado
ref:http://php.net/manual/en/reserved.variables.post.php
Yo transformaria el codigo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
//Deberias escapar los caracteres que se puedan usar en tu contra en todas las entradas de texto. No vaya a ser que te envien por correo un <script>alert('hola')</script>
$name=( (isset($_POST["name"]  ) && $_POST["name"]!=""  )?$_POST["name"]  :false );
$mail=( (isset($_POST["e-mail"]) && $_POST["e-mail"]!="")?$_POST["e-mail"]:false );
$tel =( (isset($_POST["tel"]   ) && $_POST["tel"]!=""   )?$_POST["tel"]   :false );
$txt =( (isset($_POST["txtmsg"]) && $_POST["txtmsg"]!="")?$_POST["txtmsg"]:false );
 
//Todos los campos son obligatorios, sino aparecera el formulario.
if($name===false || $mail===false || $tel===false || $txt===false)
{
	?>
<form method="post" id="contacto1">
	<label for="name">Nombre:</label>
	<input name="name" type="text" autofocus="autofocus" id="name" placeholder="Escriba aquí su nombre" tabindex="1" title="Nombre">
	<label for="email">Email:</label>
	<input name="e-mail" type="e-mail" id="e-mail" value="e-mail">
	<label for="tel">Tel:</label>
	<input type="tel" name="tel" id="tel">
	<label for="textmsg">Text Area:</label>
	<textarea name="textmsg" id="txtmsg"></textarea>
	</p> <!-- Sobra esta etiqueta si no pones otra por arriba -->
	<input name="enviar" type="submit" id="enviar">
</form>
<?php
	die();
}
 
//Nota. Cuerpo o contenido del mensaje. 
$cuerpo = "Enviado desde www.mipagina.cl para cotizar<br>\n".
          "Nombre: $name<br>\n".
          "Correo: $mail<br>\n".
          "Mensaje: $txtmsg<br>\n".
          "";
 
 
//Nota. Cabeceras para el envío en formato HTML. 
$headers = "MIME-Version: 1.0\r\n". 		//En el envio de cabeceras se usa el \r\n como salto de linea.
           "Content-type: text/html;charset=charset=UTF-8\r\n".
           "From: $mail\r\n".				//Nota. Dirección del remitente. 
           "Reply-To: $mail\r\n".			//Nota. Dirección de respuesta. //Creo que sobra.
           "Return-path: $mail\r\n".		//Nota. Ruta del mensaje desde origen a destino.  //Creo que sobra.
           "\r\n"; 							//Juraria que hay que enviar tambien este ultimo salto de linea para que sepa que es el final.
 
 
//Nota. Funcion Mail de PHP: 
// mail( $correoreceptor, $asunto, $mensaje, $cabeceras );
mail("micorreo@hotmail.com","Contacto desde www.mipagina.cl",$cuerpo,$headers);
//Confirmación de envio del mensaje. 
echo "El comentario se ha enviado con exito, te contactaremos en la brevedad!";
 
 
/**** Comento esta parte por que las variables asunto, pedido, empresa y correo_empresa no existen en este script *****
mail($email,$asunto,$pedido,"MIME-Version:1.0\r\nContent-type:text/html;charset=UTF-8\r\nFrom:$empresa<$correo_empresa>\r\n\r\n");
*****/
 
?>

PD: No he probado el codigo, ya me comentas si funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Salto de linea al enviar un correo en formato texto

Publicado por Christian (5 intervenciones) el 18/09/2013 04:02:21
Hola

Si me resulto, ahora si llega ordenado, en cuanto al $_POST lo había utilizado para formularios pero que recibian la info osea un procesa.php, pero ahora que me surgio esto de mantenerme en la misma pagina busque en internet y solo me encontre con esto y me resulto. Solo lo ultimo como edito el "de:" en la llegada del correo ahora me llega con el nombre de

De: nombredepagina@power60.powerhost.cl
Enviado: martes, 17 de septiembre de 2013 22:21:31
Para: micorreo@hotmail.com

en en procesa.php podia editarlo y dejarlo con www.mipagina.cl

en cuanto al codigo que me aportastes, lo puse no me resulto no recibi correo

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Salto de linea al enviar un correo en formato texto

Publicado por Mari Carmen (145 intervenciones) el 21/09/2013 23:50:01
El código que propongo no lo he ejecutado, esta hecho mas menos de cabeza y posiblemente falte alguna que otra cosa, aun así dejo explicaciones con lo que voy cambiando que te servirán para entender mas menos el por que lo hago y quizá puedas usarlo mas adelante en otras cosas y editar o cambiar lo que creas que he hecho mal.
Si precisas información sobre funciones te recomiendo que vayas a la pagina de PHP en este caso mas especifico puedes consultar la función mail() en http://www.php.net/manual/es/function.mail.php.

El tema del remitente(el campo de:) puede que o no procese bien la cabecera (la varaible $header), es decir, está mal escrita, o que directamente el servidor SMTP que tienen por defecto en el hosting que tengas no permite las cabeceras. Prueba leerte la información de la función mail() que te pase para entenderla y editar la cabecera y el mensaje acorde a lo que necesitas.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar