29
Correo Electrónico con PHP Temas: • Función mail(). • Formato HTML a los mensajes.

Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Embed Size (px)

Citation preview

Page 1: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

Temas:

• Función mail().• Formato HTML a los mensajes.

Page 2: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

Función mail()

Se puede utilizar la función mail() de PHP para enviar la información de formularios desde una página de Internet hacia una dirección de correo electrónico.

Al utilizar esta función se obvia el procedimiento "mailto:[email protected]", que resulta poco útil.

Con la función mail() se pueden enviar mensajes con texto simple, sin formato, y también se pueden enviar mensajes con formato HTML, dándole color a las letras, resaltando en negritas las letras, insertando imágenes, dibujando tablas, etc.

Page 3: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

Definición de la función mail:

mail($destino, $asunto, $mensaje, $encabezados);

Donde:

• $destino: es la dirección a donde se enviará el mensaje• $asunto: es el asunto del mensaje• $mensaje: es el mensaje en sí• $encabezados: aquí se anexa, por ejemplo, quien envía el mensaje, si el mensaje va ir con copia para, si el mensaje va ir con copia oculta para, si tendrá formato html, etc.

Page 4: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

Ejemplo:

<?php //indicamos el inicio del código php

mail(“[email protected]", "Prueba de correo", "esto es una prueba");

?> // aquí termina el código

Page 5: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

Configuración del PHP.ini:

[mail function]; For Win32 only.SMTP = mail.cantv.netsmtp_port = 25

; For Win32 only.sendmail_from = [email protected]

Page 6: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

Ejemplo Dos:

<?php //indicamos el inicio del código php

//Si se desea añadir un mensaje de confirmación, se utilizará el siguiente código:

$remitente = "[email protected]";$mensaje = "Prueba del Segundo Ejercicio";mail(“[email protected]", "Comentarios desde mi pagina", $mensaje, "From:$remitente") or die ("Su mensaje no se envio.");// aquí termina el código?>

Page 7: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

Los encabezados más comunes que se pueden utilizarse son:

• From: que define la dirección de email del remitente

• ReplyTo: que define a quien debe responderse el mensaje

• BCC: que define una dirección de email para enviar una copia oculta del mensaje

• "ContentType: text/html; charset=iso88591": que permite utilizar un código html en el mensaje

Page 8: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

Un ejemplo donde se utilizan estos encabezados sería:<?php$remitente = $_REQUEST["email"];$destino= “[email protected]";$asunto= "Este es un mensaje de felicitación";

$mensaje=“Felicitaciones <p>Por sus metas alcanzadas<p><b>Saludos de parte de la Gerencia de Producción</b>";

$encabezados = "From: $remitente\nReplyTo:$remitente\nContentType:text/html; charset=iso88591";

mail($destino, $asunto, $mensaje, $encabezados) or die ("Su mensaje no se envío.");?>

Page 9: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

Formato HTML a los mensajes

A veces se quiere enviar un mensaje más vistoso, para lograrlo se debe agregar un formato html:

<?php

//Ejercicio para enviarle un correo con Formato HTML a un //Cliente$nombre="Luis Garcia";

$email="[email protected]";

$titulo ="Usted es el Cliente del Mes";

$subject = "Felicidades";

Page 10: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

// Continuacion

$message='<html> <head> <title> $titulo </title> </head><body style="background:#99cc66;fontsize:18px;fontfamily: Comic Sans MS;color:red;">

<p style="color:#45yu89;fontsize:14pt;" > Felicitaciones </p><p>

<a href="http://www.tarjetasdefelicitaciones.org/happy.php"><img src="http://www.tarjetasdefelicitaciones.org/img/webtop.jpg" alt="Felicidades" ></a> </p><br></body></html>';

Page 11: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

// Continuacion

/* Para enviar correos HTML se debe especificar el Contenttype header. */

$headers = "MIMEVersion:1.0\r\n";

$headers .= "Contenttype:text/html; charset=iso88591\r\n";

mail($email, $subject, $message, $headers);

?>

Page 12: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

Ejercicio 5:

Con los conocimientos obtenidos hasta ahora, cree un

formulario de envío de sugerencias, y se las envíe al

correo electrónico de la compañía.

Page 13: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

Ejemplo completo de envío de correo electrónico

Formulario de recepción de datos

<font color="#000000" size="2"><b> Correo</b></font>

<input type="text" name="correo" size="52"><BR><FONT color="#000000" size="2"><b>Nombre</b></FONT><INPUT TYPE="text" NAME="nombre" size="40">

<BR><!--- El resto de campos, puede tener un nombre cualquiera, mejor algunoIndicativo ---><font color="#000000" size="2"><b>Asunto</b></font><input type="text" name="asunto" size="52">

Page 14: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

<!--- Puedes poner el asunto del correo, y otros campos como de tipo oculto que el usuario no ve ><!--- <input type="hidden" name="asunto" VALUE="Asunto que quieras poner en elmensaje"> ---><BR><!--- Campo de lista de selección ---><FONT size="2"><b>P&aacute;gina web</b></FONT><SELECT name="selectweb"><!---Campo seleccionado inicialmente ---><OPTION value="Ninguna" selected>Ninguna</OPTION><OPTION value="Chollolinks">Chollolinks</OPTION><OPTION value="Eurogratis">Eurogratis</OPTION><OPTION value="Mycapo">Mycapo</OPTION><OPTION value="EBA">EBA</OPTION><OPTION value="Walpapers">Walpapers</OPTION><OPTION value="Animaciones">Animaciones</OPTION><OPTION value="Cholloweb">Cholloweb</OPTION><OPTION value="Otra">Otra</OPTION></SELECT>

Page 15: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

<BR>

<!---Campo que puede omitir, añadir, o modificar a conveniencia --->

<FONT size="2"><b>Valoracion</b></FONT>

<!---Campo cuadro selección, permite seleccionar varios valores para este caso, no es muy apropiado, pues puede seleccionarse mas de una valoración. Está, a título ilustrativo. Sería mas correcto utilizar un grupo de opciones. Se suele usar el ejemplo de gustos en colores, frutas, ... para escoger varios gustos a la vez--->

<!--- podríamos omitir el valor, value="x ", para esta función nos basta con un nombre descriptivo ó utilizar el mismo nombre para todos los cuadros. Entonces, si que necesitamos especificar un valor --->

Page 16: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

<B><!--- Inicialmente, tenemos seleccionado No sabe, no contesta ---><INPUT name="Ns/Nc" type="checkbox" id="Ns/Nc" value="checkbox" checked>Ns/Nc<INPUT name="v1" type="checkbox" id="v1" value="1"> 1<INPUT name="v2" type="checkbox" id="v2" value="2"> 2<INPUT name="v3" type="checkbox" id="v3" value="3"> 3<INPUT name="v4" type="checkbox" id="v4" value="4"> 4<INPUT name="v5" type="checkbox" id="v5" value="5"> 5</B>

Page 17: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

<BR><!--- Campo que puede omitir, añadir, o modificar a conveniencia --><FONT size="2"><b>Consulta</b></FONT><!--- Grupo de Campo Alternos. Solo permite seleccionar un estado siempre que tengan el mismo name,en este caso grupo de opciones --><LABEL><B><!--Inicialmente, tenemos seleccionado el valor General. Solo se envía un valor, el seleccionado><INPUT type="radio" name="GrupoOpciones" value="General" checked>General</B></LABEL><B><LABEL>

Page 18: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

<INPUT type="radio" name="GrupoOpciones" value="Cambio Enlaces">Cambio Enlaces</LABEL><LABEL><INPUT type="radio" name="GrupoOpciones" value="Publicidad">Publicidad</LABEL></B><BR><!---Campo de líneas múltiples de 50 columnas (caracteres) y 10 filas (líneas) ---><textarea name="mensaje" cols="50" rows="10">Contenido de tu mensaje</textarea><BR>

Page 19: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

<!-- Campo oculto con la dirección de la página de gracias final--><!– Permite individualizar la página final para cada formulario-->

<INPUT TYPE="hidden" NAME="pagina_gracias"VALUE="http://www.buscarportal.com/anuncios/gracias.html">

<!-- Puedes quitar variables del script, como la página de error y ponerlo como un campo oculto con el mismo nombre, pero sin $ en el caso del php. Recuerde, que php, distingue entre mayúsculas y minúsculas. -->

<!-- Lo tengo así porque resulta mas sencillo. Lo importante del script, es que maneja cualquier número de campos sin modificar el script -->

Page 20: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

<!-- Botón de enviar . Los botones siempre al final, para que los elimine nuestro script php-->

<INPUT name="submit" TYPE="submit" VALUE="Enviar"></FORM>

Page 21: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

Script PHP para el envío de un correo

<?php## VARIABLES## Dirección de tu correo$micorreo="[email protected]";## Asunto axiliar si no lo introduce un asunto que identifique la procedencia del correo.$xasunto="Correo desde tu pagina";## Pagina final de gracias. Si el formulario no incluye este campo oculto del formulario.$gracias_defecto="http://www.buscarportal.com";## Página final si se produce un error al enviar el correo$error_correo="http://www.buscarportal.com/anuncios/error_correo.html";## variable auxiliar, que produce un salto de línea$retorno="\r\n";

Page 22: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

## CABECERAS DE CORREO## Diversas cabeceras para el correo. Luego, lo usaremos para enviar el correo.## $nombre $correo son variables que contienen los valores de: nombre y correo del formulario.

$headers = "MIMEVersion:1.0\r\n" ;

## campos y variables nombre, $nombre y correo $correo. No pueden ser modificados

## Han de mantenerse en el formulario para utilizar el mismo script con distintos formularios

Page 23: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

$headers .= "From: $nombre<$correo>\r\n";## Responder al correo$headers .= "ReplyTo:$correo<$correo>\r\n";

## Otras cabeceras que pueden ponerse si ocurren problemas u omitirse si todo va bien.

## Obligatoriamente, cada elemento de la cabecera termina en \r\n Nueva línea.

## $headers .= "XMailer: PHP/" . phpversion();## $headers .= "XSender:$correo<$correo>\r\n";## $headers .= "ReturnPath:<$correo>\r\n";## $headers .= "Cc: $nombre<$correo>\r\n";

Page 24: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

## CUERPO DEL MENSAJE INICIO## Obtención de la IP del visitante## Empezamos a contruir el mensaje final, sumando los elementos del mensaje

$mfinal.="IP visitante: ";

## Guardamos la IP del visitante$mfinal.=$HTTP_SERVER_VARS['REMOTE_ADDR'];$mfinal.=": ";## Y el puerto del usuario$mfinal.=$HTTP_SERVER_VARS['REMOTE_PORT'];## añadimos dos retornos de línea$mfinal.=$retorno;$mfinal.=$retorno;

Page 25: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

## CUERPO DEL MENSAJE AÑADIDO DE CAMPOS AL MENSAJE## $vareliminar Número de botones del formulario y campos ocultos (últimos elementos) + 1 --> en este caso (1+1)## Si queremos eliminar del mensaje el campo oculto de la página final

$vareliminar=3;$vareliminar=2;

## Almacenar en un array los nombres de variables del formulario enviado

$claves_array=array_keys ($HTTP_GET_VARS);

Page 26: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

## de i=0 hasta el número de campos del formulario, variablesa eliminarfor ($i=0;$i<=(count($HTTP_GET_VARS)$vareliminar);$i++){ ## Obtenemos el nombre de cada campo en concreto $nombrevar=$claves_array[$i]; ## Sumamos el nombre de campo de formulario al mensaje final $mfinal .= $nombrevar; $mfinal .= ": "; ## Y añadimos el contenido que haya introducido nuestro visitante $mfinal .= $HTTP_GET_VARS[$nombrevar]; ## Separamos cada campo por dos retornos, podemos eliminar uno $mfinal .= $retorno; $mfinal .= $retorno;}

Page 27: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

## Si no hay asunto, o no contiene nada, le damos al email un asunto defecto

if (is_null($asunto)){ $asunto2="correo desde la web";} ## Si hay asunto, añadimos un prefijo propio para identificar que es correo desde la web.

else { $asunto2 ="Asunto-->$asunto";}

Page 28: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

## ENVÍO DEL CORREO

## Para finalizar, envíamos el correo, y comprobamos el resultado

$resultado=mail($micorreo, $asunto2, $mfinal, $headers);

## Si quisiésemos enviar un mensaje de acuso de recibo, añadimos esta línea, sabiendo que:## tenemos que asignar estas variables $asuntoreply (Asunto), $mreply (mensaje),

$headers2(mensaje)

## de modo similar a como hemos construido las variables anteriores

## $resultado2=mail($correo, $asuntoreply, $mreply, $headers2);

Page 29: Correo Electrónico con PHP Temas: Función mail(). Formato HTML a los mensajes

Correo Electrónico con PHP

## COMPROBACIÓN

## Si no se ha podido enviar el correo.if ($resultado ==true){## Si no hay página de gracias carga las página de defectoif (is_null($pagina_gracias)){ header( "Location: $gracias_defecto" );}else{## Si hay página de gracias, cárgalaheader( "Location: $pagina_gracias" );}}## Si se ha producido un error, advierte al usuarioelse header( "Location: $error_correo" );?>