viernes, 3 de junio de 2011

Envio de correos desde PHP

El envió de correos desde php puede ser una de las tareas mas fáciles hasta una de las más complicadas, todo depende de la configuración y donde este corriendo nuestro código.

Problemas: Si estamos en un ambiente de desarrollo y pruebas como nuestra PC personal, lo más probable es que nos de un error al tratar de enviar un correo con esta función. Porque? pues porque necesitaríamos montar nuestra PC como un Mail Server con los puertos de salida abiertos para que funcione.

Ahora montar un Mail Server son otros 20 centavos que necesitaría varios post y lo cual no hago desde hace mucho tiempo pero si se animan les recomiendo leer este articulo que muestra un SMTP gratuito http://www.desarrolloweb.com/articulos/1624.php

Si por ejemplo estamos trabajando en una red interna donde tenemos acceso a un servidor que si funciona como Mail Server y no requiere autenticación podemos cambiar la configuración de php en el archivo php.ini de la siguiente forma:

Tienes que abrir php.ini luego localizar estas líneas:

[mail function]
; For Win32 only.
SMTP = localhost

En SMTP tienes que indicar el servidor SMTP que vas a utilizar para enviar el mensaje. Si la maquina donde corre el código tiene un servidor SMTP, se deja como "localhost", si no tiene que poner la dirección del servidor a utilizar como smtp.loscorreos.com o 200.35.36.7

Normalmente cuando se compra un servicio de hosting o según me han contado no me consta en algunos casos en hosting gratuitos ya viene incluido el servidor SMTP por lo que se dejaría como localhost.
Existe otra opción que es utilizar PEAR http://pear.php.net/ tiene unas funciones para enviar correo especificando servidor con las credenciales necesarias, usuario, clave, etc. pero si se requiere un poco de experiencia utilizando librerías.

Ahora un ejemplo de cómo sería el código para enviar el correo en php es el siguiente:

<?
$destinatario = "elingeniero@yahoo.com"; //quien lo envia
$asunto = "Mensaje es de prueba"; // asunto del mensaje
$cuerpo = "
<html>
<head>
   <title>Prueba de envio de Correo desde PHP</title>
</head>
<body>
<p>
Aca podria incluirse todo el mensaje que quieran poner con variables de php si fuera necesario ejemplo $nombre $clave
</p>
</body>
</html>
";

//para el envío en formato HTML se define lo que yo llamo cabecera (en español me gusta mas) con todo los datos de envio y configuracion
$cabecera = "MIME-Version: 1.0\r\n";
$cabecera .= "Content-type: text/html; charset=iso-8859-1\r\n";
$cabecera .= "From: Edsson Noe Gonzalez <edssongonzalez@gmail.com>\r\n"; //dirección del remitente
$cabecera .= "Reply-To: edsson_kln@hotmail.com\r\n"; //dirección de respuesta, si queremos que sea distinta que la del remitente
$cabecera .= "Cc: mijefe@concuidado.com\r\n"; //esto se pone si queremos copiar el correo a otra direccion

//Con esta funcion enviamos el correo
mail($destinatario,$asunto,$cuerpo,$cabecera);
?>

Una vez mas lo digo yo no soy experto no me considero para nada experto y puedo tener uno o muchos errores en esto, si alguien encuentra uno y me lo dice en hora buena, asi se aprende mas.

No hay comentarios:

Publicar un comentario