La función de correo de PHP es una característica maravillosa de PHP, en una plataforma Linux requiere que sendmail este instalado y en ejecución, pero en Windows se necesita tener un servidor SMTP para poder enviar correo electrónico desde el propio Windows. Si le echas un vistazo al archivo php.ini encontrarás las líneas siguientes:
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
La limitación en el archivo de configuración de PHP es que sólo se puede especificar el nombre del servidor SMTP y el puerto, si el servidor requiere autenticación no hay ninguna disposición para especificar el nombre de usuario y la contraseña, a menos que tengas un servidor de correo configurado para enviar email de forma local sin autentificación no hay manera de utilizar el correo del php para enviar email.
Usando sendmail para Windows puedes configurar PHP para usar un servidor SMTP externo con autenticación para enviar correos electrónicos usando la función de php mail(). La configuración de sendmail para Windows paso a paso es la siguiente:
Paso 1: Descargar y configurar sendmail para Windows
Descargar Sendmail para Windows
Sendmail Windows
Actualizado: 17-11-2016
Una vez descargado extrae en contenido del archivo zip y coloca el contenido en un lugar fácilmente accesible. Para este ejemplo lo ubicaré dentro del directorio C:\sendmail. A continuación, configura el archivo sendmail.ini. Abre el archivo sendmail.ini utilizando un editor de texto como por ejemplo el bloc de notas. Edita los siguientes valores
[sendmail]
smtp_server=localhost
smtp_port=25
;auth_username=
;auth_password=
Para este tutorial usaré los servidores SMTP de Gmail, los valores serán los siguientes:
[sendmail]
smtp_server=smtp.gmail.com
smtp_port=465
auth_username=tucuentagmail @gmail.com
auth_password=contraseñagmail
Guarda el archivo y pasa al siguiente paso.
Paso 2: Editar y modificar el archivo php.ini
En este paso el valor sendmail_path tiene que ser establecido en el archivo php.ini, busca en el archivo php.ini la sección [mail function] y comenta las líneas innecesarias poniendo un punto y coma (;) delante de ellas como puedes ver a continuación,
[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25
; For Win32 only.
;sendmail_from =
Ahora modifica lo siguiente y define la ruta de sendmail a donde reside el archivo sendmail.exe en el valor sendmail_path,
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = "C:\sendmail\sendmail.exe"
Guardar el archivo php.ini y reiniciar el servidor web apache o el servidor http que estés utilizando para que los valores sean tomados.
Paso 3: Prueba de los cambios con la función mail ()
Crea un archivo nuevo llamado, por ejemplo, mail.php dentro de la raíz del documento (htdocs o public_html o carpeta www) e introduce el código siguiente en él,
<?php
mail("emaildestino @domain.com","Subject","Email message","From: tucuentagmail @gmail.com");
?>
Guardar el archivo y acceder a él a través de url (http://example.com/mail.php) y verás una página en blanco. Ahora comprueba en el buzón de la dirección de correo electrónico emaildestino @domain.com que has recibo un correo nuevo desde la cuenta tucuentagmail @gmail.com.
Ten en cuenta que,
En posible que tengas que ajustar la configuración de sendmail.ini con valores adicionales, esto dependerá de requerimientos del servidor SMTP externo.
Para que los correos electrónicos se envíen a través de un servidor SMTP externo, su ordenador debe estar conectado a Internet.