stefanov1989 / pec-imap
Package per la gestione delle PEC in casella tramite IMAP
v1.0.2
2024-05-16 09:30 UTC
Requires
- php: >=8.0.0
- php-imap/php-imap: ^5.0
- zbateson/mail-mime-parser: ^3.0
README
#README
Questa libreria è stata creata per supportare il download e la lettura delle email di posta certificata italiana.
Il progetto utilizza due librerie:
- https://github.com/barbushin/php-imap : per il download delle email da un server IMAP
- https://github.com/zbateson/mail-mime-parser : per il parsing della mail contenuta nella busta PEC
Installazione
$ composer require stefanov1989/pec-imap
Esempio di utilizzo
$mailbox = new PecMailBox( imapPath: '{******:993/imap4/ssl}INBOX', login: $login, password: $password, serverEncoding: 'UTF-8', ); // Utilizzare i criteri di ricerca di imap_search. // Per filtrare per oggetto bisogna utilizzare il criterio "SUBJECT" iniziando la stringa con "POSTA CERTIFICATA:" $mailIds = $mailbox->sortMails(SORTARRIVAL, false, 'ALL'); foreach ($mailIds as $mailId) { // Recupero la pec dal server (la seconda variabile indica se impostare la mail come letta o meno) $mail = $mailbox->getPec($mailId, false); // recupera un array di allegati, scartando i file mime di firma della pec $attachments = $mail->getPecAttachments(); // salvataggio degli allegati foreach ($attachments as $attachment) { file_put_contents("files/" . $attachment->name, $attachment->getContents()); } // oggetto della mail ripulito echo "subject: " . $mail->getPecSubject() . PHP_EOL; // mittente della mail (vuoto se è una ricevuta) echo "mittente: " . $mail->fromName . PHP_EOL; // indirizzo del mittente echo "address: " . $mail->fromAddress . PHP_EOL; // tipo di ricevuta: completa|breve|sintetica echo "tipo ricevuta: " . $mail->getTipoRicevuta() . PHP_EOL; // ricevuta: null|non-accettazione|accettazione|preavviso-errore-consegna|presa-in-carico|rilevazione-virus|errore-consegna|avvenuta-consegna echo "ricevuta: " . $mail->getRicevuta() . PHP_EOL; // trasporto: null|posta-certificata echo "trasporto: " . $mail->getTrasporto() . PHP_EOL; // corpo html della mail echo "body html: " . $mail->bodyPecHtml . PHP_EOL; // corpo plain della mail echo "body: " . $mail->bodyPecPlain . PHP_EOL; // message id echo "message id: " . $mail->messageId . PHP_EOL; } $mailbox->disconnect(); Per tutti gli altri metodi e proprietà consultare la documentazione delle classi.