mayo 02, 2011

Enviando Mensajes de Correo Con PHP

El envío de mensajes de correo electrónico es una utilidad freceunte en los sitios web, y de manera particular la usamos en los formularios de contacto.
Valgan verdades, en esta situación tenemos tres posibilidades:
  1. Almacenar en una base de datos los mensajes para poder revisarlos posteriormente.
  2. Enviar directamente los mensajes a una dirección de e-mail.
  3. Hacer ambas cosas.
En este post aclararemos la segunda opción, y para ello usaremos la sentencia mail() de PHP, la misma que como mínimo necesita tres argumentos:
  1. La direción de e-mail hacia donde enviaremos el mensaje (destinatario)
  2. El tema o asunto del mensaje (asunto)
  3. El cuerpo del mensaje propiamente dicho (mensaje)
Existe un cuarto argumento que es opcional, se utiliza para otros datos en la cabecera del mensaje.
Un ejemplo rápido de como usar mail() es:
<?php
mail("eliot_ramos@yahoo.es", "Probando", "Hola Eliot, estoy probando mail()");
?>
Pero lo más adecuado es el uso de un formulario (en donde se ingresarán los datos para obtener los argumentos) con dos cuadros de texto (para el destinatario y el asunto) y un área de texto (para el mensaje):

<p>Enviar mensaje:</p>
<form id="form1" name="form1" method="post" action="">
Destinatario:
<input name="destinatario" type="text" id="destinatario" />
<br />
Asunto:
<input name="asunto" type="text" id="asunto" />
<br />
Mensaje:<br />
<textarea name="mensaje" cols="50" rows="8" id="mensaje"></textarea>
<br />
<input type="submit" name="Submit" value="Enviar" />
</form>
<p>
<?php
$destinatario = $_POST["destinatario"];
$asunto = $_POST["asunto"];
$mensaje = $_POST["mensaje"];
if(!empty($destinatario) && !empty($asunto) && !empty($mensaje)){
    if(mail($destinatario, $asunto, $mensaje)){
        echo "El mensaje se ha enviado a ".$destinatario;
    }else{
        echo "Ha ocurrido una excepción, el mensaje no fue enviado";
    }
}
?>
</p>
En el script PHP he agregado dos if:
  • El primero para asegurarnos de que el destinatario, asunto y mensaje no se hallen vacíos (lo más acertado sería usar validación de formularios), si estos tres contienen datos, se procederá con la siguiente evaluación.
  • El segundo if verifica si fue posible enviar el mensaje (que es diferente a que el destinatario lo haya recibido), es decir, si la función mail() está bien estructurada y si el servidor está configurado para permitir el envío de correo, y mostrará un mensaje según halla logrado enviarlo o no.
Es importante aclarar que esto NO FUNCIONARÄ EN MODO LOCAL, habrá de hacerse una modificación en el archivo de configuración php.ini y luego reiniciar el servidor.

No hay comentarios.:

Publicar un comentario

Tu comentario