Enviar mail desde un formulario con php

Filed Under (HTML, Php) by admin on 09-11-2009

Tagged Under : , , , , ,

Este es un script que ya me han preguntado más veces por el y que os puede venir bastante bien si utilizáis php.

Podéis descargaros los archivos de ejemplo más abajo.

Primero creamos el formulario (esto lo pondreis a vuestro gusto):

form.html

Podeis descargar el formulario de ejemplo [download id="3"]

Ahora vamos con lo gordo, procesar los datos y enviar el formulario,

send.php

Empezamos creando una función que serviría para convertir los caracteres acentuados y las ñ en su entidad correcta, para ello usamos htmlentities y htmlspecialchars_decode

[code lang="php"]function caracteres_html($texto){
$texto = htmlentities($texto, ENT_NOQUOTES, 'UTF-8');
// Convertir caracteres especiales a entidades
$texto = htmlspecialchars_decode($texto, ENT_NOQUOTES);
// Dejar <, & y > como estaban return $texto; }[/code]

A continación recibimos las datos del formulario y los metemos cada uno en una variable (quitar los espacios que hay antes de POST) y creamos otras variables, como el destinatario y el asunto:

[code lang="php"]$destinatario="info@azdream.es";
$nombre = caracteres_html($_ POST['nombre']);
$telefono = caracteres_html($_ POST['telefono']);
$empresa = caracteres_html($_ POST['empresa']);
$email = caracteres_html($_ POST['mail']);
$comentarios = caracteres_html($_ POST['comentarios']);
$asunto="Consulta desde el formulario de la WEB";[/code]

Ahora ya podemos pasar a crear el mail, primero las cabeceras:

[code lang="php"]$cabeceras="Content-type: text/html\n";
$cabeceras.="From: Consulta desde la WEB <$destinatario> \r\n";
$cabeceras.="Reply-To: {$email}\r\n";[/code]

La primera línea indica qué tipo de mail se enviará (html), la segunda será de quién viene (el From) y la tercera vamos a usarla por si queremos responder directamente a quien ha rellenado el formulario, para no tener que andar buscándolo en los datos que recibiremos… sólo pincharíamos en el botón RESPONDER de nuestro gestor correo.

Una vez creadas las cabeceras creamos el cuerpo y ya podemos enviar el mail en la misma función:

[code lang="php-brief"]if(mail($destinatario, $asunto, " $nombre ha enviado una consulta a traves desde la web< br>< br/>

<b>Nombre: $nombre
Empresa: $empresa
Telefono: $telefono
E-mail: $email

Comentarios: $comentarios

PRUEBA FORM
",$cabeceras)){ echo "enviado"; } else { echo "no enviado"; }[/code]

Con esto ya estaría  ya que mandamos todo a través de la función mail

[code lang="php"]if(mail($destinatario, $asunto, $cuerpo_del_mensaje,$cabeceras)){ echo "enviado"; } else { echo "no enviado"; }[/code]


Para descargar los archivos:

[download#4#image]