Estoy configurando un servidor Apache (2.2.14) en Windows y tomando prestadas ideas de una configuración XAMPP existente. Ahora estoy intentando configurar la funcionalidad de correo electrónico para PHP (5.3.1). (Debe poder manejar archivos adjuntos, tal como lo hace el servidor XAMPP).
He notado que XAMPP viene consendmail falso para Windows, pero varias cosas sobre la configuración no tienen sentido para mí.
Aquí hay un par de líneas de XAMPP php.ini
:
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
Esto es extraño porque:
- Dice explícitamente "sólo para Unix", pero
- Sigo viendo tutoriales que dicen usar esta línea para Windows, y
- la ruta del archivo de ejemplo ni siquiera tendría sentido en Unix
sendmail_path
está comentado de forma predeterminada
Me preguntaba si sendmail.exe
es siquiera necesario. Entonces, en mi servidor Apache personalizado, que no tiene sendmail.exe
, edité php.ini
para agregar la información correcta para SMTP
, smtp_port
y sendmail_from
. ¡Con eso, pudo enviar correo! Pero es muy lento.
Luego volví al servidor XAMPP y cambié el nombre del sendmail
directorio, con la esperanza de desactivar sendmail. Eso funcionó: mi script PHP afirmó haberse enviado, pero no pasó nada.
Entonces estoy muy confundido.
- Mi servidor XAMPP ha
sendmail_path
comentado, pero aparentemente todavía usa el programa al que apunta. ¿Cómo lo sabe? - Mi servidor Apache no tiene nada
sendmail_path
, pero de alguna manera puede enviar correo sin él. ¿Como hace eso?
¿Qué necesito hacer realmente para configurar el servidor Apache para enviar correos electrónicos?
Respuesta1
Después de más búsquedas y pruebas, parece que:
En Windows, la función mail() de PHP no necesariamente necesita entregar el correo electrónico a otro programa en la misma computadora; puede conectarse a un servidor de correo por sí mismo
Sin embargo, esto es ineficiente y lento.
Configurandocorreo falsoen la máquina del servidor y señalarle
php.ini
lasendmail_path
directiva hace que el envío de correo electrónico sea mucho más rápido. Personalmente, me imaginosendmail.exe
masticando los datos en pedazos agradables y digeribles y escupiéndolos en la boca del servidor de correo como una mamá pájaro alimentando a su bebé. ¡Mmmm! Pero tal vez estoy loco.sendmail.exe
Si ingresaC:\usr\bin
, esto permite que algunos programas que esperan ejecutarse en un sistema operativo basado en Unix se ejecuten en Windows
Aquí estáalgo de información en el manual de PHPeso me ayudó a resolver esto.
Nota: La implementación de mail() en Windows difiere en muchos aspectos de la implementación de Unix. En primer lugar, no utiliza un binario local para redactar mensajes, sino que solo opera en sockets directos, lo que significa que se necesita un MTA escuchando en un socket de red (que puede estar en el host local o en una máquina remota).
Y...
Nota: Vale la pena señalar que la función mail() no es adecuada para grandes volúmenes de correo electrónico en un bucle. Esta función abre y cierra un socket SMTP para cada correo electrónico, lo cual no es muy eficiente. Para enviar grandes cantidades de correo electrónico, consulte los paquetes » PEAR::Mail y » PEAR::Mail_Queue.
Respuesta2
Apache no participa realmente en ninguna configuración para el envío de correo electrónico. Esto lo maneja completamente PHP y, en este caso, el MTA local. El MTA será Sendmail o Postfix casi siempre. La configuración para esto se encuentra en el archivo php.ini en la sección [función de correo] llamada sendmail_path.