Fake sendmail o como hacer que la función mail() funcione en Windows.

Para los que usamos Windows, es algo difícil (por no decir imposible) encontrar un cliente SMTP que realmente funcione bien. O bien tienen limites, o en la mayoría de los casos no funcionan.. o algunos servidores de correo (como gmail) acaban denegando la petición porque no proviene de una IP "aceptada".


Hace tiempo descubrí "Fake sendmail". Es un "programa" que se encarga de hacerte la vida mas fácil. Es un cliente SMTP capaz de enviar correos desde tu cuenta de correo (gmail, hotmail etc). Ami personalmente me resulta bastante cómodo porque:

1. No dependo de programas que se tengan que estar ejecutando todo el tiempo a la escucha.
2. No dependo de mi IP puesto que el correo se envía desde una cuenta de correo corriente de un servicio popular.
3. Realmente emula la función sendmail -t y por tanto no dependo de librerías externas.
4. Es GRATIS!

Para los que lo quieran probar os dejo el enlace hacia la pagina:
http://glob.com.au/sendmail/

Instalando sendmail


Una vez descargado el archivo (.zip) lo descomprimimos en la carpeta deseada. Preferiblemente debe ser una carpeta a nivel partición (C:\sendmail). En mi caso, yo la descomprimo en C:\SERVER\sendmail que es donde tengo instalado el servidor WAMP (Windows - Apache - MySQL - PHP).

Ahora, nos toca editar el archivo sendmail.ini. Lo que mas nos interesa son las siguientes lineas:
; Direccion del servidor de correo SMTP
smtp_server=
; Puerto del servidor. Gmail usa 465
smtp_port=
; Uso de SSL.. en Gmail es obligatorio (ssl)
smtp_ssl=
; Tu usuario.. para gmail, debe ser la dirección de correo completa
auth_username=
; Contraseña.
auth_password=
; Forzar el emisor. Asi no te obligara a indicar el header "From"
; Debe ser el correo que usas en auth_username
force_sender=bad.stupid.monkey@gmail.com

En mi caso, yo utilizare gmail así que esta seria mi configuración:
smtp_server=smtp.gmail.com
smtp_port=456
smtp_ssl=ssl
auth_username=bad.stupid.monkey@gmail.com
auth_password=********
force_sender=bad.stupid.monkey@gmail.com

Bien, ahora toca editar el archivo php.ini. La razón es que debemos indicarle que utilizaremos una app aparte y que no mande directamente el request hacia el puerto 25 de nuestro ordenador.

Asi que buscamos sendmail_path, ponemos la ruta hacia el sendmail.exe que hemos descargado y agregamos el parámetro -t. En mi caso:
sendmail_path = "C:\SERVER\sendmail\sendmail.exe -t"

Probando! Probando!


No hace falta mas que una simple linea en PHP para probar si todo va bien:
<?php mail("bad.stupid.monkey@gmail.com","Prueba","jajajajaja"); ?>

Si algo no funciona (no te llega el correo), siempre puedes consultar el archivo error.log en la carpeta del sendmail.

Saludos

Comentarios

Entradas populares de este blog

Añadir Sublime Text 2 al menú contextual.