martes, 24 de julio de 2012

Enviar un Email desde PHP

Hoy vamos a enviar un email desde PHP.
Lo primero que vamos a hacer es realizar los cambios necesarios en el php.ini

Vamos a buscar donde dice:

[mail function]
; For Win32 only.
SMTP = localhost //aquí vamos a quitar el ;  y vamos a poner el nombre del servidor de salida.

; For Win32 only.
sendmail_from = mi_email@localhost.com  //aquí vamos a poner la dirección desde la que queremos
                                                                   //enviar el correo, podemos fijarla también en las cabeceras
                                                                  //como verás en el ejemplo.

Importante: Reiniciar el servicio de Apache después de realizar el cambio para que funcione.

Ahora vamos al código

Para enviar email php tiene la función: mail($destino,$asunto,$mensaje,$cabeceras) que permite enviar texto simple sin formato o en formato html, también se pueden enviar adjuntos, lo vamos a ver en la próxima entrada del blog.

Mejor mostramos un ejemplo para que quede más claro

Vamos a definir las cabeceras

//aqui defino para poder utilizar caracteres especiales y enviar texto html
 $cabeceras  = 'MIME-Version: 1.0' . "\r\n";
 $cabeceras .= 'Content-type: text/html; charset=ISO-8859-1' . "\r\n";
 $cabeceras .= 'From: Grupo de Operaciones <yeny@ejemplo.com>' . "\r\n";

Ahora las variables $destino,$asunto y $mensaje las puedo recoger por un formulario o definirlas directamente en el código, según lo necesite.

El cuerpo del correo lo recojo en la variable $mensaje.

Si solo quiero enviar texto simple basta con asignar la cadena de texto a la variable mensaje, por ejemplo:
$mensaje ="este es mi menssaje";
//o si lo recojo por formulario
$mensaje =$_REQUEST["texto"];//donde texto es el nombre que asignamos en el formulatio al
                                                        //textbox donde se introduce el texto.

Ahora, si quiero enviar texto con formato html debo pasar en la variable mensaje todos los tags de mi página html.

Un ejemplo sería.

$mensaje .= "  <tr>";
$mensaje .= "<td width=\"621\" class=\"letra_negrita\">";
$mensaje .= "<div align=\"center\">";
$mensaje .= " Titulo de mi página&nbsp;";
$mensaje .= "</div>";
$mensaje .= "</td>";
$mensaje .= "</tr>";
$mensaje .= " <tr>";
$mensaje .= "<td width=\"621\" class=\"letra_normal_verde_claro\">";
$mensaje .= "<div align=\"center\">";
$mensaje .= " Texto blablabla....."; //aqui puedo incluir resultados de consultas ect.
$mensaje .= "</div>";
$mensaje .= "</td>";
$mensaje .= "</tr>";

Para incluir en el cuerpo del correo resultados de consultas solo introduzco en la cadena mensaje las variables que quiero mostrar, no la consulta en sí.

Un ejemplo:

//aquí recojo las variables del formulario y realizo la consulta
$mes = $_REQUEST["mes"];
$anno = $_REQUEST["anno"];
$resultf = mysql_query("select meses.Mes, anno.anno from anno, meses
where (meses.CodMes='$mes') and (anno.codanno='$anno')",$conexion);
$fecha = mysql_fetch_object($resultf);

$mensaje .= "  <tr>";
$mensaje .= "<td width=\"621\" class=\"letra_normal_verde_claro_negrita\">";
$mensaje .= "<div align=\"center\">";
$mensaje .= "$fecha->Mes/$fecha->anno"; //Aquí muestro en el cuerpo del email el resultado de la
                                                                       // que me interesa de la consulta.
$mensaje .= "</div>";
$mensaje .= "</td>";
$mensaje .= "</tr>";

Una vez definidas todas las variables envío el email.

 mail($destino,$asunto,$mensaje,$cabeceras)

Espero les sea útil, hasta la próxima.





No hay comentarios:

Publicar un comentario