martes, 1 de octubre de 2013

Enviar email con la función mail de PHP



Para poder hacer uso de la función mail de PHP es necesario que tanto si es un servidor local o externo, tenga esta función activada y por supuesto tenga un servidor de correos correctamente configurado, por ejemplo, en un servidor local con la distribución XAMPP el servidor de correos es Mercury, para configurarlo correctamente es necesario seguir una serie de pasos que puedes ver a través del siguiente link ... Configurar Mercury, si se trata de un servidor externo y la función mail no funciona, es cuestión de que te pongas en contacto con el propietario del mismo.

mail($para, $titulo, $mensaje, opcional[$cabeceras])
  • $para : Es un string en el que se incluyen los destinatarios o receptores del mensaje, se puede indicar los destinatarios de las siguientes formas ...
    • Un sólo destinatario: email1@hotmail.com
    • Varios destinatarios: email1@hotmail.com, email2@hotmail.com, ...
    • Un sólo destinatario: <email1@hotmail.com>
    • Un sólo destinatario + nombre: pepito <email1@hotmail.com>
    • Varios destinatarios: <email1@hotmail.com>, <email2@hotmail.com>, ...
    • Varios destinatarios + nombres: pepito <email1@hotmail.com>, juanito <email2@hotmail.com>, ...
  • $titulo : es un string que contiene el título del mensaje
  • $mensaje : Contiene el mensaje del email, también puede ser en formato html que deberá ser indicado en el parámetro $cabeceras
  • $cabeceras : Se usa para añadir cabeceras extra From, Cc, Bcc o formato del mensaje. Es aconsejable separarlas a través de los indicadores \r\n


Ejemplo de email sencillo con mensaje en texto plano ...

#destinatario/s
$para = "destinatario@hotmail.com";
#asunto del mensaje
$titulo = "El asunto o título del mensaje";
#el mensaje
$mensaje = "Estoy enviando un mensaje en texto plano";
#se envía el email
mail($para, $titulo, $mensaje);
Ejemplo de email con cabeceras y mensaje en formato HTML ...

#destinatario/s
$para = "destinatario <destinatario@hotmail.com>";
#remitente
$remitente = "administrador <administrador@hotmail.com>";
#asunto del mensaje
$titulo = "El asunto o título del mensaje";
#el mensaje
$mensaje = "<h1>
Estoy enviando un mensaje en HTML</h1>
";
#Indicando en las cabeceras el formato HTML y el tipo de codificación
$cabeceras  = "MIME-Version: 1.0" . "\r\n";
$cabeceras .= "Content-type: text/html; charset=UTF-8" . "\r\n";
#Cabeceras necesarias
$cabeceras .= "To: $para" . "\r\n";
$cabeceras .= "From: $remitente" . "\r\n";
#se envía el email
mail($para, $titulo, $mensaje, $cabeceras);


Si tu intención es la de enviar emails algo más sotisficados con copias y archivos adjuntos es aconsejable que utilices la clase PHPMAILER, tiene un mejor rendimiento que la función mail(), aunque si se trata de emails sencillos, mail() es una buena opción.