Attualmente sto usando il file mimeDecode.php della libreria PEAR per analizzare le email in arrivo. Sembra che abbia molti problemi e non riesce a decodificare molti messaggi, quindi mi piacerebbe sostituirlo con qualcosa di meglio.Il modo migliore per gestire l'analisi/decodifica delle e-mail in PHP?
Sto cercando qualcosa che sia in grado di separare correttamente parti del messaggio, ad esempio da, corpo, ecc. Idealmente sarebbe in grado di gestire tutti i metodi di codifica comuni come base64, uuencode, stampabile quotato , ecc.
In situazioni in cui sia le versioni in testo normale sia quelle in html dello stesso messaggio sono contenute in una singola e-mail, mi piacerebbe che conoscesse la differenza tra loro in modo da poter scegliere quale parte desideravo visualizzare.
Non sono preoccupato per gli allegati in questo momento, ma sarebbe bello poterne avere conoscenza nel caso in cui volessi implementarlo in futuro.
Ho visto che PHP ha un gruppo di funzioni che iniziano con la parola imap che sembra possano fare ciò che vorrei, ma non sono sicuro senza averle provate.
Attualmente sto eseguendo la decodifica al volo dei messaggi in PHP, motivo per cui sto cercando una soluzione di sostituzione PHP.
Qualcuno ha un'esperienza con questo che potrebbe indicarmi la giusta direzione? Mi dispiacerebbe iniziare a usare qualcosa che finirebbe per non fare ciò di cui ho bisogno a lungo termine.
fai a sapere se è possibile usare Zend_Mail senza il connettore di archiviazione? Vorrei passare un messaggio in arrivo come stringa e poter utilizzare i metodi associati ai messaggi su di esso senza che sia necessario provenire da un percorso di archiviazione. – Sgraffite
Sì, sono sicuro che esiste un modo perché questa stessa classe viene utilizzata anche per inviare messaggi con le classi mailer/transport e in tal caso si costruiscono sempre stringhe/file di moduli di messaggi. Se ricordo che assomiglia a '$ m = new Zend_Mail_Message (array ('raw' => $ stringMessage));' Dai un'occhiata alla classe effettiva e ai commenti del doc per la verifica da parte del costruttore. – prodigitalson
Questo ha finito per funzionare per me. Zend ha fatto alcune cose che non ho capito perché comunque. Zend genererà un'eccezione quando non riconosce un'intestazione. Nel mio caso, non mi interessano le intestazioni non riconosciute, quindi ho finito per commentare quell'eccezione. Esiste anche una funzione in cui Zend fa un foreach() su $ parti, ma a volte la variabile che sta cercando di foreach on è nullo, quindi ho aggiunto un controllo nullo e restituito $ res se è nullo. – Sgraffite