En este tutorial de PHP, aprenderás a usar la función mail(), que sirve para enviar correos electrónicos, veremos 3 ejemplos: uno es el del uso mas basico de la funcion, el segundo que llevara etiquetas HTML en el mensaje y el ultimo que recibirá los datos a enviar desde un formulario en HTML.
TeorÃa:
La sintaxis de la funciona mail es bastante sencilla, solo tenemos que indicarle mediante comas los siguientes valores:
mail(recipiente, asunto, mensaje, encabezado, parametros);
- recipiente: El e-mail que recibe el mensaje.
- asunto: El asunto del mensaje.
- mensaje: Contenido del mensaje.
- encabezado (opcional): Puede ir el e-mail del remitente, CC/BCC y unas cosas mas que lo explicare mas adelante.
- parametros (opcional): Especifica parametros mas avanzados.
Ejemplos
Aviso: estos ejemplos solo funcionaran en un servidor que pueda enviar correos, esto quiere decir que no van a funcionar en tu servidor local a menos que tengas un SMTP instalado, lo recomendable es que se pruebe en hostings reales, puedes ver una lista de 7 hostings gratuitos que te pueden servir para probar estos ejemplos.
Ejemplo 1: Lo básico
En este ejemplo veremos el uso mas básico de la función mail().
<?php mail('ejemplo@tursos.com', 'Ejemplo de Mail', 'Este mensaje es enviado desde un script de PHP.', 'From: Juan Perez <Juan@Perez.com>'); ?>
Otra forma de hacerlo mas ordenado es usando variables:
<?php $recipiente = 'tu@email.com'; $asunto = 'Ejemplo de Mail'; $mensaje = 'Este mensaje es enviado desde un archivo de PHP'; $encabezado = 'From: Juan Perez <Juan@Perez.com>'; mail($recipiente, $asunto, $mensaje, $encabezado); ?>
Ejemplo 2: Mensaje HTML
Este otro ejemplo llevara un mensaje con etiquetas HTML, para que acepte código HTML necesitamos agregar un ‘Content-type’ en el encabezado:
<?php $encabezado = 'MIME-Version: 1.0' . "\r\n"; $encabezado .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; ?>
Nota: ‘\r\n’ se usa para hacer saltos de linea.
El código final seria el siguiente:
<?php $recipiente = 'tu@email.com'; $asunto = 'Ejemplo de Mail'; $mensaje = 'Este mensaje tiene <i>etiquetas</li> HTML y es enviado desde un <strong>script</strong> de PHP'; $encabezado = 'MIME-Version: 1.0' . "\r\n"; $encabezado .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $encabezado .= 'From: Juan Perez <Juan@Perez.com>' . "\r\n"; mail($recipiente, $asunto, $mensaje, $encabezado); ?>
Ejemplo 3 Formulario
En este ultimo ejemplo aplicaremos lo aprendido en este tutorial de PHP, se reciben los datos mediante $_POST desde un formulario en HTML, pasamos estos datos a PHP y se envia el correo.
<form id="form1" method="post"> Asunto:<br /> <input id="asunto" name="asunto" size="75" type="text" /> <br />Recipiente :<br /> <input id="recipiente" name="recipiente" size="75" type="text" /> <br />Mensaje:<br /> <textarea id="mensaje" cols="100" rows="20" name="mensaje"></textarea><br /> <input id="enviar" name="enviar" type="submit" value=" Enviar " /> </form>
Después ingresamos este código PHP justo debajo del formulario, incluye validación de campos (mirar comentarios)
Nota: para que funcione este ejemplo, tienes que poner tanto el codigo HTML de arriba como el codigo PHP de abajo en un solo archivo.
<?php if(isset($_POST['enviar'])) //Preguntamos si se presiono el boton de submit { //Recibimos las variables $recipiente = $_POST['recipiente']; $asunto = $_POST['asunto']; $mensaje = $_POST['mensaje']; $encabezado = 'MIME-Version: 1.0' . "\r\n"; $encabezado .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $encabezado .= 'From: Juan Perez <Juan@Perez.com>' . "\r\n"; // substr_count // se le pone @ adelante del substr_count para ignorar los errores. if(@substr_count($recipiente,'@') == 1){ // Validacion de correo escrito correctamente if($asunto == '' or $mensaje == '' or $recipiente == '' ) // Validacion de campos sin rellenar { echo '<strong>Campos vacios, por favor llene los campos</strong>'; } else { mail($recipiente, $asunto, $mensaje, $encabezado); echo "<strong>Se envio correctamente</strong>"; } } else { echo "<strong>Email es incorrecto</strong>"; } } ?>
daniel dice
amigo quisiera aprender php como hago para que me guies
y me ayudes a instalar php
gracias
Patricia dice
Muy interesante Gracias por el tutorial…
Fabián dice
Estimado Edwind:
Excelente Post!!!
Cordiales Saludos
KARINA dice
Hola
Sigo tus tutoriales y muy padres todos, sólo que tengo una pregunta, utilizó el mismo código si tengo en un formulario opciones? es decir, en un campo utilizo la opción de ESTADO y pongo en un listForm todas las opciones desde Aguascalientes hasta Zacatecas, ¿cómo le hago para q llegue a mi correo la opción q el usuario eligió?
Saludos y Gracias!
Josep M dice
Buenas, estoy intentando crear un formulario que me envÃe los datos a mi correo personal. Esta es la manera más sencilla? (si hay otra porfavor si puede aviseme).
Otra cosa, en la notas que hay (Nota: para que funcione este ejemplo, tienes que poner tanto el codigo HTML de arriba como el codigo PHP de abajo en un solo archivo.) que tipo de archivo debe ser? (Lo he echo en una HTML pero si encima hay el codigo HTML y debajo el PHP, no me acepta el PHP).
Gracias 🙂
Carlos dice
Buenas, (buen turso y muy bien explicado), comentas al principio el uso de CC i BCC, pero no lo veo explicado. Estoy intentando hacer que un formulario para que llegue a 2 correos electrónicos, pero no me aclaro. ¿Cómo deberÃa incluirse el CC o el BCC con PHP? Gracias.
Edwind Pineda dice
Va en el encabezado, de esta manera
$encabezado .= ‘Cc: Juan@Perez.com‘ . «\r\n»;
$encabezado .= ‘Bcc: Juan@Perez.com‘ . «\r\n»;