Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

¿Cómo puedo comprobar un problema con el correo que se envía en mi servidor? Corro una prueba sencilla:

if(mail($to, $subject, $message)) {
echo 'Mail Sent';
}

que la prueba da salida el texto; pero, no hay correo nunca llega.

¿Cómo puedo ir sobre el rastreo del problema?

¿Fue útil?

Solución

Ese es una larga historia. Unos pocos puntos de la bala (suponiendo que el correo () devuelve verdadero y no hay errores en el registro de errores):

  • ¿La dirección del remitente ( "De") pertenece a un dominio en su servidor? Si no es así, que así sea.
  • ¿Es el servidor en una lista negra (por ejemplo, comprobar IP en spamhaus.org)? Esta es una posibilidad remota con alojamiento compartido.
  • ¿Son los correos filtrados por un filtro de spam? Abrir una cuenta con un freemailer que tiene una carpeta de correo no deseado y averiguar. Además, trate de enviar correo a una dirección sin un filtro de spam.
  • ¿Usted posiblemente necesite el quinto parámetro "f" de correo () para agregar una dirección de remitente? (Véase mail () de comandos en el manual de PHP)
  • Si usted tiene acceso a los archivos de registro, compruebe esos, por supuesto, como se sugirió anteriormente.
  • Foro de comprobar el "de:" dirección para posibles mensajes de rebote ( "devueltos al remitente")? También puede configurar un "-a errores de" dirección por separado.

Para los que hablan alemán, he escrito un muy exhaustiva "qué hacer" en este tema hace algún tiempo. Ver aquí .

Otros consejos

Después de Myles, si usted está en una máquina Linux, hacer esto en la línea de comandos:

# echo “Body text.” | mail -s “Hello world” you@example.com

Si usted no recibe ese correo electrónico, usted tiene un problema con el sistema de correo en esa caja. Esa es una cuestión diferente de la cuestión de PHP que pidió.

Desde el manual de PHP:

Return Values

Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.

It is important to note that just because the mail was accepted for delivery, **it 
does NOT mean the mail will actually reach the intended destination**.

No sabe cómo dar el siguiente paso, pero eso es un punto importante aquí.

Si toda la corrección fallan - suponiendo ahora que el correo () devuelve falso por razones desconocidas - cambiar a una secuencia de comandos de correo como PHPMailer que le permite eludir electrónico () en conjunto y se conecta directamente a través de SMTP, e incluye una amplia modo de depuración. De esa manera, debe ser capaz de configurar ya sea una solución de trabajo o encontrar el núcleo del problema.

El primer lugar me gustaría empezar es el registro de errores de PHP, entonces el registro de Sendmail. Proveedores sendmail desde la línea de comandos y comprobar la configuración de PHP para asegurarse de que está configurado correctamente para enviar correo.

¿Estás trabajando en un servidor web en vivo aquí, o algo más en la línea de una caja de arena desarrollo personal? (Es decir, la máquina de casa?) Si es esto último, te puedo decir que he tenido un montón de problemas en el pasado con mi ISP (Cox) filtrar mis puertos de correo saliente. (Ellos le dirán que ellos no hacen eso, pero estoy seguro que hacen.)

También he recibido algunos mensajes salientes que hicieron hacerlo a través de quedar atrapado en la cola de correo Cox durante días antes de que se han entregado a mí.

Espero que sea útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top