Newsgroup: it.comp.www.php
Titolo: Return path o altro?

Ciao a tutti,
è possibile in qualche modo memorizzare in un database quello che
viene spedito dal comando return path?
Cerco di spiegarmi meglio:
Invio una mail a un utente, se va a buon fine non voglio registrare
niente, se non va a buon fine voglio registrare il messaggio di errore
(mailbox piena, indirizzo inesistente) nel database.
Grazie
Vincenzo

 
Tutto si può fare ma c'e' un problema alla base: l'eventuale mex di 
errore torna al mailserver e non al webserver. Certo potresti fare uno 
script con procmail + php e raggiungere l'obiettivo...
	Francesco


ma la funzione mail di php non ritorna un valore booleano ? quindi se
si facesse un controllo sulla riuscita del messaggio dovrebbe andare
bene no ?
tipo:
se l' email restituisce true allora bene invece se restituisce falso
salvare nel db il destinatario e la data dell' email ?
detto una str***a ?  :D

 detto una str***a ?  :D
Si :-)
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.
Quindi torna true se la mail viene accettata dall'MTA; questo significa 
che la mail è partita ma non dice niente in merito all'avvenuta 
ricezione di cui, per inciso, ogni MTA può trattare in modo diverso.
Pertanto per conoscere lo stato della lettura possiamo:
mail con "avviso di ricezione" (cassata da molti smtp server, in quanto 
genera traffico inutile!) o con contenuti "tracciabili" (modello 
un'immagine nascosta che punta ad un certo sito web, il foglio di stile 
etc..)
Pertanto per conoscere lo stato della mancata ricezione:
Trattare attraverso appositi script eventuali mail delivery relativi 
alle mail inviate, coscienti del fatto che alcuni mail server possono 
omettere eventuali errori oppure inviare mail di errore n giorni dopo 
l'invio della mail.
	Francesco

         Francesco
Quindi qual'è la soluzione migliore per fare questa cosa?
Vincenzo

 
Non c'e' una soluzione (direttamente via php). L'unica cosa che puoi 
fare, come ho riportato nel precedente post, è analizzare le mail che 
(se) ti ritornano ma a differenza del web server (error code 404 page 
non found) i server smtp non hanno una codifica standard per gli errori, 
quindi devi estrapolare l'errore dal testo.
	Francesco


Grazie Francesco,
quindi mi confermi che l'unico metodo per sapere se le email che ho
inviato tramite php non sono arrivate è questo, non c'è un altro
metodo più semplice?
Vincenzo

 Vincenzo
Nella mia risposta del 13/05 ho fatto una netta distinzione tra:
1 Mail NON arrivate al destinatario
2 Mail arrivate al destinatario (alla mailbox/dir del destinatario)
3-A Mail arrivata e non letta
3-B Mail arrivata al destinatario e letta
Soluzioni per verificare i vari stati:
1 Controllare eventuali risposte del postmaster dal server del destinatario
2 Nessuna nuova, buona nuova!
3-B Avviso di lettura [1] oppure tracking della mail attraverso 
contenuto web [2]
[1] Posso leggere la mail e non dirtelo oppure alcuni mail server 
"tagliano" le mail di ricezione
[2] Ho il client di posta configurato per per mostrare oggetti remoti
Altrimenti, PEC
	Francesco

 1 Controllare eventuali risposte del postmaster dal server del destinatario
Ok a me interessa questa soluzione, qual'è la migliore strada per
svilupparla?
Impostare un return-path e leggere l'e-mail che arriva identificando
l'errore?
Vincenzo

 
Teoricamente si, il problema è creare un parsing per estrapolare dalla 
mail che ti ritorna che tipo di errore ha rilevato [1], a che mail si 
riferisce [2] e anche al destinatario.
[1] potrebbe essere un out of quota o unknown user
[2] alcuni mta hanno una certa (giorni) latenza tra la ricezione e la 
notifica di errore
[3] alcuni mta riportano il nome reale dell'utente mentre te potresti 
aver inviato ad un alias
E' un lavoro fattibile ma certosino
	Francesco
PS Siamo largamente OT