working work ssmtp not mail doesnt php email

ssmtp - php mail is not working



PHP mail() no funciona (7)

Esta pregunta ya tiene una respuesta aquí:

Quiero crear un formulario de registro simple con correo de activación y así sucesivamente. Pero por algún motivo, mail () no envía los correos electrónicos, o mis 3 cuentas de correo electrónico diferentes (hotmail, gmail, yahoo) no los reciben y, por lo tanto, ni siquiera los colocan en la carpeta de spam.

Código:

<?php $mailto = ''[email protected]''; $subject = ''the subject''; $message = ''the message''; $from = ''[email protected]''; $header = ''From:''.$from; if(mail($mailto,$subject,$message,$header)) { echo ''Email on the way''; } ?>

Cada vez que sale ''Correo electrónico en el camino'' para que mail () devuelva verdadero, ¿verdad? Realmente no lo entiendo, incluso he intentado apagar mi pequeña snitch (aunque no bloqueé SMTP).


Compruebe su phpinfo y / o php.ini para la configuración de su correo y asegúrese de que puede enviar correo con cualquier programa que php esté tratando de usar. La función tendrá éxito si el comando se ejecuta pero no sabe si el correo realmente se apagó.


Es posible que necesite agregar caracteres correctos de fin de línea a los encabezados. Puede ser /n o /r/n


Si se trata de un servidor Linux, probablemente esté configurado para enviarlo a la cola de correo local. Cuando tuve este problema lo conseguí trabajando agregando una entrada MX en el servidor DNS utilizado por los servidores de Linux que apuntaban al servidor de correo de nuestro ISP.


Tal vez su servidor no está configurado para manejar mail() .

<?php print phpinfo(); ?>

y mira sendmail_path



Vea este artículo de Jeff Atwood .

En resumen: el hecho de que su código haya entregado el correo electrónico a un agente de transferencia de correo no significa que se entregará. Sí, el mail() devuelve verdadero significa " aceptado para la entrega", lo que significa "Parece un correo electrónico, intentaré entregarlo", no "Se entrega". Incluso el manual para mail() dice :

Es importante tener en cuenta que solo porque el correo electrónico fue aceptado para su entrega, NO significa que el correo llegará realmente al destino deseado.

Soooo: verifique su MTA (¿es el correo electrónico enviado desde su computadora local?), Intente enviarlo a una dirección local (si la dirección es local, ¿se entrega?), Intente enviar un correo electrónico desde su correo. cliente, usando la misma configuración que su script PHP, intente enviarlo a un hoster de correo más pequeño que le permita apagar el antispam (¿se entrega fuera de su red?). Además, lea ese artículo y verifique los puntos mencionados allí.


Verifique el registro de correo de su servidor de correo. En sistemas Unix-ish, generalmente es / var / log / maillog. En Windows, quién sabe, pero debería haber un registro en alguna parte. Si el correo devuelve TRUE, el servidor de correo al que se está conectando ha aceptado el correo para una eventual entrega. Después de eso, mail() ya no está involucrado de ninguna manera y depende de los servidores SMTP hacer la entrega real.

En términos del mundo real, el mail() es que está caminando una carta por el bloque y colocándola en un buzón. Todo después de eso está completamente fuera del alcance y control de PHP.