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>"; } } ?>