funcion - php mail smtp
¿Por qué no debería usar la función de correo de PHP()? (4)
El mail()
de PHP mail()
se dice que es ilegible y funciona lentamente. No puedo decir esto por experiencia personal porque nunca lo he usado porque, como tú, siempre me han desaconsejado. Si nos fijamos en los comentarios en la entrada de mail()
en el manual de PHP , puede ver algunos de los problemas que la gente tiene con él (especialmente con encabezados).
Definitivamente no es adecuado para enviar una cantidad sustancial de correo electrónico, porque, de acuerdo con el manual en sí,
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, que no es muy eficiente.
Para el envío de grandes cantidades de correo electrónico, consulte los paquetes »PEAR :: Mail, y» PEAR :: Mail_Queue.
AFAIK, nunca es preferible (en cuanto al rendimiento) abrir y cerrar un socket por cada mensaje que envíe, independientemente de la cantidad de correo que esté enviando.
Básicamente, es una función que funciona, pero no muy bien, y está eclipsada por una serie de mejores bibliotecas.
La opinión general cuando se trata de enviar mensajes de correo electrónico en PHP es mantenerse alejado de la función incorporada de mail()
de PHP mail()
y usar una biblioteca en su lugar.
Lo que quiero saber son las razones reales y las fallas al usar el mail()
sobre una biblioteca o extensión. Por ejemplo, los encabezados comúnmente especificados que no están incluidos en una llamada estándar de mail()
.
La razón más importante es que mail () puede hablar directamente con un servidor de correo, y si no sabe lo que está haciendo al desinfectar su información, un hacker puede engañar a su servidor de correo para que envíe un correo que no sea el que usted pretende. . La mayoría de las bibliotecas de terceros tienen mejores condiciones sanitarias (o mejores API) para ayudar a prevenir esto.
Lo que importa no es solo la función de correo () sino también el servidor smtp que se utiliza en conjunto. He utilizado tres servidores smtp diferentes con php: postfix, qmail, sendmail.
En mi experiencia postfix fue la más fácil de trabajar con php mail () pero incluso postfix tenía algunos problemas. Encontrarás pequeños errores. Podrían ser cosas como los destinatarios "a" recibir correos electrónicos correctamente estructurados y destinatarios "bcc" que reciben correos electrónicos corruptos. Perderás mucho tiempo tratando de descubrir estos errores. Y sus correcciones harán que su código no funcione correctamente con los otros servidores smtp.
El problema radica en el manejo del encabezado del correo electrónico y PHP lamentablemente hace un mal trabajo al respecto. Recientemente cambié a la biblioteca "PHP Mailer". En nuestro sitio web tenemos dos servidores smtp, uno con postfix y otro con qmail. "PHP Mailer" trabajó con ambos sin configuración adicional.
Quoting :
Desventajas de la función PHP
mail()
En algunos casos, los correos enviados a través de PHP
mail()
no recibieron los destinatarios, aunque fue enviado por WB sin ningún mensaje de error. Las razones más comunes para ese problema se enumeran a continuación.
- formato incorrecto del encabezado o contenido del correo (por ejemplo, diferencias en el salto de línea entre Windows / Unix)
- sendmail no está instalado o configurado en su servidor (php.ini)
- el proveedor de correo de la receta no permite el envío de correos por
mail()
PHPmail()
; protección antispam comúnLos errores en el formato de encabezado o contenido pueden hacer que los correos se traten como SPAM. En el mejor de los casos, dichos correos se transfieren a la carpeta de correo no deseado de la bandeja de entrada de su destinatario o se envían al remitente. En el peor de los casos, dichos correos se eliminan sin ningún comentario. Si sendmail no está instalado o no está configurado, no se pueden enviar correos.
Es una práctica común que el proveedor de correo gratuito como GMX rechace el envío de correos a través de la función PHP
mail()
. Muy a menudo dichos correos se eliminan sin ninguna información del destinatario.