La función mail
de PHP parece entregar correo en un sistema limpio, sin una configuración aparente realizada por el administrador o el webmaster (sin configuración SMTP en php.ini
, etc.). ¿Cómo funciona la función mail
para enviar correo a un servidor remoto?¿Cómo funciona el "correo" de PHP?
Respuesta
En * nix invoca el sendmail
binario, que luego utiliza la configuración de correo para enrutar el correo electrónico. En Windows, envía a un servidor SMTP. En ambos casos, el sysadmin configura el sistema de correo.
Gracias por responder la pregunta que hice. No estaba seguro de si PHP estaba contactando al servidor remoto y manejando el SMTP, o si le pasó esa tarea al MTA en el servidor local. Además, ¿sabes por qué esta pregunta está siendo downvoted? Creo que mucha gente simplemente lo malinterpretó. Parece encajar en el alcance del sitio (como se define en [Preguntas frecuentes] (http://stackoverflow.com/faq)). –
@Tom: La gente se obsesiona con la redacción en lugar de la pregunta. –
He modificado la pregunta para ayudar a rectificar el problema. No entiendo qué es "ambiguo, vago, incompleto, demasiado amplio o retórico" al respecto. Intenté preguntar en la sala de chat de PHP, pero no había moderadores allí o ninguno respondió. ¿Hay un mejor lugar para aprender sobre el sitio? –
Realmente no es tan confiable, a menos que el sendmail
subyacente o algo esté configurado correctamente.
Amazon SES tiene mejores servidores que cualquier servidor que esté utilizando y recibe correo allí más veces que con mail()
.
La razón real por la que no debe usar mail()
es porque la dirección IP de su servidor es probablemente completamente desconocida para servicios de correo como GMail, Yahoo, etc., y hay una mayor probabilidad de que se marque como spam. ¿Por qué se marca como spam? Porque mail()
es muy fácil y simple de explotar con fines no deseados.
Esto realmente no responde la pregunta, que fue cómo funciona. Yo uso SES para otras cosas. Esto simplemente quería saber cómo funciona en una instalación limpia sin configuración, no por qué se marca como spam o qué debo usar en su lugar. Gracias por la respuesta, sin embargo. –
sendmail. /conversacion. – David
mail() usa sendmail, que usa DNS para encontrar el registro MX del dominio de destino y lo entrega allí directamente. Eso es.
y dado que el servidor de destino probablemente no conozca su dirección IP, especialmente si está NATed, puede marcarse como correo no deseado.
puede modificar su configuración para usar un servidor smtp diferente (conocido legalmente) para actuar como intermediario.
Puede detectar cómo funciona de la siguiente manera.
Primer método
$ ltrace php -r "mail('[email protected]', 'Test', 'Hello world');" 2>&1 | grep sendmail
memcpy(0x095ea168, "sendmail_from", 14) = 0x095ea168
memcpy(0x095ea1e0, "sendmail_path", 14) = 0x095ea1e0
popen("/usr/sbin/sendmail -t -i ", "w") = 0x0977c7c0
A partir de los resultados del comando anterior se puede ver que la función popen()
se abre el proceso de /usr/sbin/sendmail -t -i
.
$ ls -l /usr/sbin/sendmail
... /usr/sbin/sendmail -> exim4
Así sendmail
es el enlace simbólico a exim4
y por lo tanto sendmail -t -i
invoca exim4 -t -i
.
Y en la página del manual de exim4
se puede leer acerca de estas opciones -t -i
:
$ man exim4 | grep ' -t -i'
-ti This option is exactly equivalent to -t -i. It is provided for compatibility with Sendmail.
Segundo método
Instalar snoopy y ejecute:
# grep snoopy /var/log/auth.log | tail
... php -r mail('[email protected]', 'Test', 'Hello world');
... /usr/sbin/sendmail -t -i
... /usr/sbin/exim4 -Mc 1YxxYn-0006a7-Nw
... /usr/sbin/exim4 -t -oem -oi -f <> -E1YxxYn-0006a7-Nw
... /usr/sbin/exim4 -Mc 1YxxYn-0006aB-Oj
Los resultados del comando anterior muestra la secuencia de los comandos que se realizaron.
- 1. PHP formato html de correo no funciona
- 2. El correo de PHP no funciona por alguna razón
- 3. cómo formatear el correo electrónico de php
- 4. El correo de PHP dejó de funcionar
- 5. EC2 - Instalación reciente de PHP - Correo no funciona
- 6. cómo saber si el correo php falló
- 7. cómo usar el correo php pear
- 8. cómo funciona el autocargador php
- 9. ¿Funciona realmente el filter_var FILTER_VALIDATE_EMAIL de PHP?
- 10. PHP mail() no funciona
- 11. ¿Cómo funciona PHP? - Literatura
- 12. El correo de PHP no se envía, ¿cómo debo depurar?
- 13. ¿Cómo funciona el verdadero/falso en PHP?
- 14. ¿cómo funciona el encabezado en php?
- 15. Correo PHP: ¿Múltiples destinatarios?
- 16. Error de correo de PHP
- 17. php enviar correo electrónico con el accesorio de
- 18. Desbordamiento: oculto no funciona en el correo electrónico
- 19. ¿Cómo especifico a PHP que el correo() debe enviarse usando un servidor de correo externo?
- 20. Correo PHP usando Gmail
- 21. Enviando correo de PHP: ¿está el error al final o el servidor de correo?
- 22. PHP validación de correo electrónico
- 23. Mejor clase de correo PHP
- 24. ¿Cómo validar un correo electrónico en PHP?
- 25. Cómo descargar correo electrónico con PHP
- 26. ¿Cómo funciona "imagettfbbox()" en PHP?
- 27. ¿Cómo funciona PHP con Apache?
- 28. Dirección múltiple de correo de PHP
- 29. ¿Cómo funciona PHP PDO internamente?
- 30. El correo de PHP UTF8 se confunde en la aplicación de correo de iPhone
¿Por qué se ha realizado esa configuración? A menos que se refiera a la entrega de correo al webmaster, no tiene sentido que el webmaster configure las cosas. – 11684
Hace la pregunta incorrecta: no hay nada de malo en la función de correo electrónico() en PHP, no es poco confiable. El problema es el contenido y la distribución de tus correos. Una mejor pregunta sería '¿cómo puedo evitar que mis correos terminen en la carpeta de spam?'. – Repox
dijo 'confiable' pero esto realmente no es una pregunta para ... aquí – Alex