di PHP mail
sembra consegnare la posta su un sistema pulito, senza alcuna configurazione apparente fatto dall'amministratore o webmaster (nessuna configurazione SMTP in php.ini
, etc.). In che modo la funzione mail
consegna la posta a un server remoto?Come funziona `mail` di PHP? la funzione
risposta
Su * nix si invoca il sendmail
binario, che poi utilizza la configurazione della posta per instradare la posta elettronica. Su Windows, invia a un server SMTP. In entrambi i casi, l'amministratore di sistema imposta il sistema di posta.
Grazie per aver risposto alla domanda che ho posto. Non ero sicuro che PHP stesse contattando il server remoto stesso e gestendo l'SMTP, o se avesse trasferito quell'attività al MTA sul server locale. Inoltre, sai perché questa domanda è stata downvoted? Penso che molte persone semplicemente lo abbiano frainteso. Sembra adattarsi allo scopo del sito (come definito da [le FAQ] (http://stackoverflow.com/faq)). –
@ Tom: le persone si sono fissate sulla formulazione piuttosto che sulla domanda. –
Ho modificato la domanda per aiutare a correggere il problema. Non capisco cosa sia "ambiguo, vago, incompleto, eccessivamente ampio o retorico" a riguardo. Ho provato a chiedere nella chatroom di PHP ma nessun moderatore era lì o nessuno di loro ha risposto. C'è un posto migliore per conoscere il sito? –
non è poi così affidabile, in realtà, a meno che il sottostante sendmail
o qualcosa sia configurato correttamente.
Amazon SES ha server migliori di qualsiasi server che si sta utilizzando e riceve posta lì più volte rispetto a mail()
.
La vera ragione per cui non si dovrebbe usare mail()
è perché l'indirizzo IP del proprio server è probabilmente completamente sconosciuto ai servizi di posta come GMail, Yahoo, ecc. Perché viene contrassegnato come spam? Perché mail()
è molto facile e semplice da sfruttare a scopi di spam.
Questo non è proprio rispondere alla domanda, che è come funziona. Io uso SES per altre cose. Semplicemente volevo sapere come funziona su un'installazione pulita senza configurazione, non perché viene contrassegnata come spam o cosa invece dovrei usare. Grazie per la risposta, però. –
sendmail. /conversazione. – David
mail() usa sendmail, che utilizza DNS per trovare MX record di dominio di destinazione e fornisce direttamente. questo è tutto.
e dal server di destinazione, probabilmente non conosce l'indirizzo IP, soprattutto se è NATed può essere contrassegnato come spam.
è possibile modificare la configurazione per utilizzare diversi server smtp (noto ad legit) ad agire da intermediario.
È possibile rilevare come funziona come di seguito.
Primo metodo
$ 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
Dai risultati del comando precedente può essere visto che la funzione popen()
apre il processo di /usr/sbin/sendmail -t -i
.
$ ls -l /usr/sbin/sendmail
... /usr/sbin/sendmail -> exim4
Così sendmail
è il link simbolico a exim4
e quindi sendmail -t -i
invoca exim4 -t -i
.
E nella pagina di manuale di exim4
si può leggere su queste opzioni -t -i
:
$ man exim4 | grep ' -t -i'
-ti This option is exactly equivalent to -t -i. It is provided for compatibility with Sendmail.
Secondo metodo
Installare snoopy ed eseguire:
# 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
I risultati del comando precedente mostra la sequenza dei comandi che sono stati eseguiti.
- 1. La funzione PHP mail() non funziona nel server namecheap
- 2. funzione di sicurezza e mail() in php
- 3. La funzione di posta PHP non funziona sul server Centos
- 4. Che cosa rende la funzione mail() di PHP così lenta?
- 5. Come posso usare la funzione PHP Mail() all'interno di PHP-FPM? Su Nginx?
- 6. Verifica esito positivo della funzione mail() PHP
- 7. Mailcatcher: funzione PHP mail() restituisce false
- 8. Devo usare la funzione php mail o phpmailer?
- 9. La funzione PHP mail() restituisce true, ma non invia posta
- 10. spiegare come funziona questa funzione personalizzata PHP
- 11. funzione PHP ssh2_connect non funziona
- 12. La funzione di ridimensionamento immagine PHP non funziona correttamente
- 13. PHP mail() come impostare mittente di posta
- 14. Funzione mail di base (PHP) addizionale "-f" parametro domanda
- 15. Codifica e-mail PHP?
- 16. Come allegare PDF a e-mail utilizzando la funzione di posta PHP
- 17. PHP: mail() vs SendMail
- 18. Come funziona la funzione noConflict di jQuery?
- 19. Come funziona la funzione mapPartitions di pyspark?
- 20. Come funziona la seguente definizione di funzione?
- 21. Come funziona la funzione di riduzione?
- 22. Qual è la differenza tra la funzione chiama "mail()" e "@mail()"?
- 23. Php mail: come inviare html?
- 24. Come verificare se PHP mail() è abilitato?
- 25. PHP Mail, CC Field
- 26. Come funziona max_execution_time di PHP?
- 27. La funzione PHP pass come param allora chiama la funzione?
- 28. Parere sull'invio di e-mail da php
- 29. Come registrare tutte le chiamate su una funzione in PHP? (funzione mail())
- 30. Funzione ricorsiva: chiama la funzione php stessa
Perché questa configurazione è stata eseguita? A meno che non intenda consegnare la posta al webmaster, non ha senso che il webmaster configuri le cose. – 11684
Stai facendo la domanda sbagliata - non c'è niente di sbagliato nella funzione mail() in PHP - non è inaffidabile. Il problema è il contenuto e la distribuzione delle tue mail. Una domanda migliore potrebbe essere "come posso evitare che le mie mail finiscano nella cartella spam?". – Repox
ha detto "affidabile" ma questa non è davvero una domanda per ... qui – Alex