PHP: función mail() al detalle

Dado que el otro día expliqué de una forma rápida cómo enviar emails a través de la función mail(), hoy voy a comentar con más detalle su uso.

La estructura general es la siguiente:

mail ($destino, $asunto, $mensaje, $cabeceras);

La dirección de destino se puede indicar de cualquiera de las siguientes formas:

mail('nombre@empresa.com');
mail('nombre1@empresa.com, nombre2@empresa.com');
mail('Nombre <nombre@empresa.com>');
mail('Nombre1 <nombre1@empresa.com>, Nombre2 <nombre2@empresa.com>');

Para indicar el asunto:

$asunto = 'El asunto no debe exceder los 70 caracteres ni tener saltos de linea';

Respecto al mensaje:

$mensaje = "Aqui va el contenido a enviar, para crear saltos de linea escribimos \n";

Las cabeceras son las que más miga tienen, tenemos 4 opciones, podemos utilizar solamente una, o las 4 a la vez (separándolas con saltos de línea).

//Dirección del remitente
From: Web <nombre@empresa.com>
//Dirección a quien responder
Reply-To:  Nombre <nombre@empresa.com>
//Dirección a quien enviar una copia del mensaje
BCC: Nombre <nombre@empresa.com>
//Cabecera para enviar el email cómo HTML
Content-Type: text/html; charset=iso-8859-1

Y poco más, con esto ya queda explicada con más detalle la función mail(), que la disfrutéis ;P

  • 3 junio 2008
  • php
  • , ,

24 comments on “PHP: función mail() al detalle”

  1. Un errorcito Nati, mira:

    Tanto saltos de línea como retornos de carro como tabulaciones u otras abreviaturas (\n , \r , \t) solamente funcionan entre comillas dobles, luego deberías cambiar tu ejemplo en;

    $mensaje = ‘Aqui va el contenido a enviar, para crear saltos de linea escribimos \n’;

    Por:

    $mensaje = «Aqui va el contenido a enviar, para crear saltos de linea escribimos \n»;

    O de lo contrario no se registrará un salto de línea sino la cadena ‘\n’.

    Por lo demás buen artículo ;)

  2. ups! muchas gracias por la corrección pepe, te mereces una miniestatua :D
    ahora diría: no.. si lo he hecho para ver si estabais atentos.. cuela? jaja
    que va, la verdad ni me había dado cuenta, yo y mi manía de las comillas simples.. esq son taaaaaaaaaan bonitas xD

  3. Te comprendo, yo uso un 80% de comillas simples tb porque para llenarlas con HTML son ideales (no colisionan con las dobles de los atributos en las tags xD) pero mira, ya que estoy una pequeña guía de como usarlas, para mi gusto claro:

    Comillas dobles («): son ideales para concatenar variables en texto

    – Texto plano -> echo «Hola, me llamo $nombre»;
    – Consultas SQL -> mysql_query(«SELECT * FROM tabla WHERE ref = ‘referencia’ LIMIT 1»);

    Comillas simples (‘):

    – Índices de arrays -> echo «El valor es {$array[‘1’]}»;
    – HTML/XML -> echo ‘<a href=»www.web.com» title=»ir a mi web» rel=»nofollow»>’;

    Bueno, más o menos xD

    Un saludo nati, espero que sigas actualizando el blog con esta frecuencia ;)

  4. Ola queria saber como puedo crear un formulario de envio, osea insertar un codigo en una pagina html y cuando hagan clic en enviar , el action vaya a un «enviar.php» y de envie el mensaje a mi e-mail.
    Gracias……

  5. Hola ulises!
    Simplemente inserta el código de envío en la página enviar.php y escribe el action así:
    <form action=»enviar.php» method=»post»>
    Cuando hagan clic sobre el botón enviar, se ejecutará el código de enviar.php
    Un saludo!

  6. hola,muy bueno tu blog, mire muchas cposas y son interesantes, una pregunta, para enviar la pagina tiene que estar conectada a un servidor, subida en un hosting o algo, o teniendolo en el escritorio funciona? me refiero al otro post que pusiste tu codigo que usabas

    felicitaciones, y verdaderamente me da pena que no obtengas ganancias por este blog! te recomiendo que agreges unos bloques adsense :D

    jejeje

    adios! y chauu

  7. Hola julian!
    Sí que te hace falta subir el archivo a un servidor / hosting que te interprete php (esto es importante), si no quieres pagar seguro que hay alojamientos gratuitos con esta característica.. si no te aclaras o no consigues que funcione, avisame e intentamos arreglarlo.
    Gracias por las felicitaciones, y sobre el adsense todo se andará, no es una cosa que me quite el sueño xD
    Un saludo!! ya me cuentas que tal tu formulario :)

  8. Hola Nataly! He estado leyendo las entradas de tu blog y pues me han resultado bastante útiles. Fijate que yo soy bastante nuevo en esto del desarrollo web, y estoy trabajando en un sitio, sin embargo, tengo todo el aspecto del diseño bajo control, y quiero incluir un formulario en PHP, sin embargo, ya tengo el fichero de php pero no se como incluirlo en el html… jejeje se que debe ser simplísimo pero no se como hacerlo y sería peor quedarme con la duda para siempre… Muchas gracias de antemano por tu respuesta y saludos desde Guatemala!

  9. Hola, estoy perdido, solo se la parte del diseño, y no tengo claro esto.
    Quiero crear un formulario en html y que me llegue al email, si me pudieras ayudar te agradeceria

  10. una pregunta funciona igual $sendmail = mail($to,$subject,$message,$headers);
    if($sendmail){
    $status = true;
    }

    que mail($destino,$asunto,$comtario,$desde,$headers);

    y dos por q cuadno lo corro localmente si lo hace envia correo pero cuando lo subo ami web por me dio de un ftp ya no envia el correo

  11. Saludos. Te escribí mi problema con esta parte del codigo php mail, mi proveedor de hosting alega lo siguiente: ….»La causa de que no pueda enviar correos a traves del formulario, es por que la funcion mail de php utiliza el usuario «nobody» para hacer el envio del correo, esta es una vulnerabilidad que puede ser aprovechadas por terceros para enviar spam a traves del server, por esta razon lamentablemente nos vimos en la obligacion de restringir el envio de correo a traves del usuario «nobody»….

    ¿¿¿¿Existe solución en el codigo para este problema????
    Agradecería tu ayuda…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *