He entendido lo siguiente, que aunque se menciona que las cabeceras son un dato opcional, resulta obligatorio al menos definir un valor de From o bien en la variable que corresponde a las cabeceras dentro de la propia función mail o bien en php.ini asignándole un valor.
La página php.net dice:
Cita:
Bueno ahora voy con mi código php para ejecutar la acción de enviar los datos del formulario a través de la funcion mail(), que es el siguiente:Cuando se envía un correo, el correo debe contener una cabecera From. Puede establecerse con el parámetro additional_headers, o puede definirse un valor por defecto en php.ini.
Si no se realiza esta acción se obtendrá un mensaje de error similar a Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. La cabecera From también establece Return-Path bajo Windows.
Si no se realiza esta acción se obtendrá un mensaje de error similar a Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. La cabecera From también establece Return-Path bajo Windows.
Cita:
He puesto en negrita aquellos elementos que me generan ciertas dudas. Por ejemplo los CRLF (\r\n), en la misma página se avisa de que algunos "servidores SMTP" reemplazan los LF por CRLF duplicándose el \r por lo que en ese caso sólo habría que usar \n. ¿Esta información es actual?<?php
$nombre = $_REQUEST["nombre"];
$remitente = $_REQUEST["email"];
$destino= "[email protected]";
$asunto= $_REQUEST["asunto"];
$mensaje= $_REQUEST["mensaje"];
$mensaje = wordwrap($mensaje, 70);
$encabezados = "From: $remitente" . "\r\n" . "Reply-To: $remitente" . "\r\n" . 'Content-type: text/plain';
mail($destino, $asunto, $mensaje, $encabezados) or die ("Su mensaje no pudo ser enviado.");
?>
$nombre = $_REQUEST["nombre"];
$remitente = $_REQUEST["email"];
$destino= "[email protected]";
$asunto= $_REQUEST["asunto"];
$mensaje= $_REQUEST["mensaje"];
$mensaje = wordwrap($mensaje, 70);
$encabezados = "From: $remitente" . "\r\n" . "Reply-To: $remitente" . "\r\n" . 'Content-type: text/plain';
mail($destino, $asunto, $mensaje, $encabezados) or die ("Su mensaje no pudo ser enviado.");
?>
La página tambien dice: "Cada línea debería ser separada por un LF (\n)". Yo al poner $mensaje = wordwrap($mensaje, 70); garantizo un máximo de 70 caracteres por línea ¿Pero y el \n? en mi código no se donde debería aparecer una instrucción.
Se que para un texto en html es necesario indicar en la variable de los encabezados "Content-Type: text/html; charset=iso-8859-1" ¿Para texto plano es recomendable?
Mi finalidad es enviar un correo a través del servidor de correo de la empresa que me brinda hosting "ovh" y recibirlo en un correo con formato [email protected] que sería recibido en mi pc usando tambén esos mismos servidores. Siguiendo el ejemplo de este tutorial http://guias.ovh.es/EmailConfigurationThunderBird.
Como última duda referente a los encabezados veo que mucha gente en sus ejemplos menciona que el colocarlos dentro de una sola variable les da problemas. ¿Alguien sabe a qué puede deberse el hecho de que escriban: $cabecera = x; $cabecera . = y; $cabecera . =w;?
Eso es todo, intenté colocarlo todo en un mismo post para ser lo más preciso posible.
Gracias por vuestra atención de antemano.