Si lees mi blog, aunque sea de vez en cuando (ya se que no lo actualizo muy a menudo), verás que hace ya algún tiempo escribí un post sobre como instalar y configurar WampServer, podéis leer el post aquí. Aunque ya tiene algún tiempo, sigue siendo perfectamente utilizable.
Pues bien, a raíz de unas pruebas que estaba realizando para un proyecto, he necesitado enviar un email desde mi servidor local y me ha puesto manos a la obra para configurarlo de forma correcta.
En primer lugar, os voy a contar lo que necesitamos, para las pruebas, he utilizado una cuenta de gmail, aunque sirve cualquiera si tenemos los datos de configuración (servidor de salida, nombre, contraseña), y utilizar un programa llamado Fake Sendmail que veremos como configurar.
Lo primero que debemos de hacer es descargar el programa Fake Sendmail desde su web en http://glob.com.au/sendmail/
En el apartado de “Install”, pulsamos sobre el texto en azul que pone download sendmail.zip y comenzará la descargar del programa. Si queréis ahorraros ese paso, podéis comenzar la descargar del programa pulsando directamente aquí.
Ahora deberemos descomprimir el programa en una carpeta dentro de nuestra aplicación WampServer. Por ejemplo en “C:\wamp\sendmail”.
El siguiente paso, es configurar los parámetros del servidor de correo, para ello tenemos que editar el fichero “sendmail.ini”, uno de los ficheros que hemos guardado en la carpeta.
Debemos localizar los siguientes campos y poner la información de nuestro servidor.
smtp_server=smtp.gmail.com
smtp_port=465
auth_username=tu_nombre_de_usuario@gmail.com
auth_password=tu_password
Si en alguna de las líneas hubiera un punto y coma (;), deberíamos quitarlo para que funcione correctamente.
Ahora debemos de configurar el archivo php.ini de nuestro servidor, si aún no habéis ejecutado WampServer este es el momento de activarlo.
Una vez haya arrancado, pulsamos sobre el icono de WampServer en la parte derecha de la pantalla, y vamos a la opción de PHP y pulsamos sobre php.ini.
Se nos abrirá el fichero php.ini y deberemos de buscar la linea que dice “sendmail_path» y la dejamos de la siguiente manera:
sendmail_path =»C:\wamp\sendmail\sendmail.exe -t»
Si habéis descomprimido el programa de sendmail en otra carpeta diferente a la de este ejemplo, deberéis de poner la correcta, la que vosotros estéis usando.
Por último reiniciamos el programa WampServer.
Si todo ha sido correcto, ya tendremos nuestro sistema configurado para poder enviar emails desde nuestro servidor servidor local.
Tan solo nos queda hacer una prueba, para ello creamos un archivo php donde insertamos el siguiente código.
<?php
$para = ‘destinatario@dominio.com’;
$asunto = ‘Prueba de SMTP local’;
$mensaje = ‘Mensaje de prueba’;
$cabeceras = ‘From: remitente@dominio.com’ . «\r\n» .
‘Reply-To: remitente@dominio.com’ . «\r\n» .
‘X-Mailer: PHP/’ . phpversion();if(mail($para, $asunto, $mensaje, $cabeceras)) {
echo ‘Correo enviado correctamente’;
} else {
echo ‘Error al enviar mensaje’;
}
?>
Y lo guardamos en nuestro servidor. No olvidéis poner correctamente los datos de dirección de email del ejemplo. A continuación ejecutamos nuestro script, si todo es correcto, os deberá llegar a la cuenta que hayáis indicado un email de confirmación, a su vez, en el navegador os mostrará un mensaje de confirmación.
Si el correo no ha podido ser enviado, también veréis un mensaje de aviso en el navegador, por lo que deberéis de revisar los datos de configuración que hayáis introducido.
En la imagen inferior podéis ver que el mensaje ha llegado correctamente.
Con esto terminamos la configuración de sendmail y WampServer y ya podemos enviar los emails desde nuestro servidor local.
Así por llevar la contraria, la función de sendmail (que es un ‘fake mail’ ya que no usa SMTP directamente), está incluida en XAMPP, que además es multiplataforma, lo que permite tener copias ‘exactas’ en Windows y Linux (por ejemplo); aunque por supuesto, hay otras plataformas que permiten el entorno Apache + PHP + SQL; es cuestión de gustos (o de hilar muy fino) 😉
Saludos.
Hola segui todos tus pasos pero al final manda el mensaje de error al enviar el correo (Es el que se declara en el if)
Que puede ser? se tiene que configurar en FIreword el puerto ?
Revisa las variables, que las tengas bien escritas. En principio a mi no me dio ningún error el firewall. Pero ayudaría que indicadas q error te sale para concretar un poco mas.
Este es mi codigo:
———————————————-
—————————————————–
En pantalla me aparece:
Email no enviado
Lo demas lo tengo igual como dice el tutorial….
E leido que hay q activar algun modulo en wamp>phpextensions y wamp>apachemodules
¿Eso se tiene que hacer aqui?
————————————————–
————————————————
smtp_server=smtp.gmail.com
smtp_port=465
auth_username=erkrodriguez.m@gmail.com
auth_password=[«mi contraseña que tengo ya la puse»]
PHP.INI
sendmail_path = C:\wamp\sendmail\sendmail.exe -t
smtp_port = 465
————————————————–
//
————————————————
Mi viejo muchas gracias.
Este es en esencia el mismo tutorial con el cual he configurado el fake sendmail y el .ini de PHP, primero me salía un error Warning respecto el SMTP el cual he solucionado descomentando en php.ini el smtp_path.
Ahora bien, el Warning no se envia pero recibo el echo de «Mensaje No Enviado»;
El sendmail lo he descomprimido directo en Wamp.
Estoy usando GMAIL
Saludos y Muchas Gracias
Hola Dionisio,
Comprueba esto que te indico:
1) Revisa la línea del php.ini y comprueba que la tienes correctamente configurada.
sendmail_path =»C:\wamp\sendmail\sendmail.exe -t»
Ojo, las rutas tienen que corresponder con tus carpetas.
2) ¿Has reiniciado el servidor tras la instalación?
3) en el fichero sendmail.ini, donde se configuran los datos de tu cuenta de correo, revisa que esté todo bien escrito, si alguna de las lineas tiene delante un punto y coma (;), has de eliminarlo.
4) copia el ejemplo que pongo de php y ejecútalo en el server, cambiando las direcciones.
Buenas tardes seguí todos los pasos y me lanza el mensaje de «Error al enviar el mensaje» tengo el wamp configurado y el sendmail también, no se que podrá ser y llevo ya horas en esto, hay que configurar algún servidor smtp aparte? o solo con lo aquí expuesto debería funcionar?.. tengo el mismo código php y ya revise las variables y están bien, agradecería mucho la ayuda ya que necesito probar el envió de emails.
Buenas tardes Andrés,
Acabo de volver a probar todo el manual paso a paso, y a mi no me ha dado ningún problema, he recibido el correo de prueba correctamente.
¿Que cuenta usas, una de gmail como el ejemplo u otra diferente?, en el caso de que no sea una cuenta de gmail, revisa que el puerto que estás usando es el correcto.
No necesitas tener configurado ningún servidor a parte, pero tal vez tengas que configurar otros campos que tiene el sendmail.ini.
Revisa los campos pop2_server, pop3_usernamo y pop2_password, ya que dependiendo de la cuenta que uses, igual es necesario que los cubras.
La cuenta que uso es la gmail, los campos que mencionas los tengo así
pop3_server=
pop3_username=
pop3_password=
es decir los tengo vacíos no he colocado nada desde la instalacion
Cambia el puerto, en vez de 465, prueba con el 25 que suele ser el habitual.
ya lo cambie y nada, estaba revisando el archivo de debug y mira lo que sale
14/08/22 17:06:26 ** — MESSAGE BEGIN —
14/08/22 17:06:26 ** To: andresvarela26@gmail.com
14/08/22 17:06:26 ** Subject: Solicitud de informacion
14/08/22 17:06:26 ** X-PHP-Originating-Script: 0:send.php
14/08/22 17:06:26 ** From: andy_eskate261@hotmail.com
14/08/22 17:06:26 ** X-Mailer: PHP/5.4.3
14/08/22 17:06:26 ** Mime-Version: 1.0
14/08/22 17:06:26 ** Content-Type: text/plain
14/08/22 17:06:26 **
14/08/22 17:06:26 ** Este mensaje fue enviado por Andres, de la pagina hola.com
14/08/22 17:06:26 ** Su e-mail es: andy_eskate261@hotmail.com
14/08/22 17:06:26 ** Mensaje: hola
14/08/22 17:06:26 ** Enviado el 22/08/2014
14/08/22 17:06:26 ** — MESSAGE END —
14/08/22 17:06:26 ** Connecting to smtp.gmail.com:25
14/08/22 17:06:37 ** Disconnected.
14/08/22 17:06:37 ** Disconnected.
14/08/22 17:06:37 ** Disconnected.
14/08/22 17:06:37 ** Disconnected.
14/08/22 17:06:37 ** Connect timed out.
y en el archivo error me sale
14/08/22 17:06:37 : Connect timed out.
me devuelve este error,
Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in