Table des matières
phpIMAP
phpIMAP est une bibliothèque PHP facilitant la lecture d'une boîte courriel utilisant IMAP. De plus, vous y trouverez une méthode permettant d'authentifier des utilisateurs sur un serveur IMAP.
Page Git
Fonctionnalitées
- Authentification IMAP
- Outils pour gérer une boîte courriel
Puis-je l'utiliser?
Ce logiciel est distribué sous la licence GNU General Public License v3.0 . Veuillez lire LICENCE pour plus d'informations sur la disponibilité et la distribution du logiciel.
Sécurité
Veuillez divulguer toute vulnérabilité trouvée de manière responsable - signalez les problèmes de sécurité aux responsables en privé.
Prérequis
- PHP version 5.5
Installation
composer require laswitchtech/php-imap
Méthodes
Pour faire simple, nous assumerons que vous avez déjà initialisé la Class $phpIMAP
.
getFolders
Cette méthode list les dossiers disponible.
read
Cette méthode ajoute le drapeau de lecture sur un message.
delete
Cette méthode supprime un message.
isConnected
Cette méthode permet de vérifier si la connection au serveur IMAP à bien été établi.
if($phpIMAP->isConnected()){ // Connection is Successful }
get
Cette méthode vous permet de lire la liste dee messages d'un dossier. Cette liste contient tous les informations sur les messages lut. Incluant les en-têtes, les attachements et le contenue de ceux-ci.
$phpIMAP->get(); // will fetch all emails from the INBOX by default
Pour regarder dans un dossier spécifique:
$phpIMAP->get("Sent");
De plus, si vous voulez récupérer seulement les nouveaux messages:
$phpIMAP->get(['new'=>true]); $phpIMAP->get("Sent",['new'=>true]);
Traitement des messages
end($phpIMAP->get()->messages)->ID; // ID of the message end($phpIMAP->get()->messages)->UID; // UID of the message end($phpIMAP->get()->messages)->Header; // Complete header information end($phpIMAP->get()->messages)->From; // From email address end($phpIMAP->get()->messages)->Sender; // Sender email address end($phpIMAP->get()->messages)->To; // Array of the To addresses end($phpIMAP->get()->messages)->CC; // Array of the CC addresses end($phpIMAP->get()->messages)->BCC; // Array of the BCC addresses end($phpIMAP->get()->messages)->Subject->Full; // Subject of the message end($phpIMAP->get()->messages)->Subject->PLAIN; // Original subject end($phpIMAP->get()->messages)->Body->Meta; // Message structure end($phpIMAP->get()->messages)->Body->Content; // Message body (HTML if present otherwise plain text) end($phpIMAP->get()->messages)->Body->Unquoted; // Message body without quote end($phpIMAP->get()->messages)->Attachments; // Message attachments stored in an array
Traitement des attachements
end(end($phpIMAP->get()->messages)->Attachments)['filename']; // filename of attachment end(end($phpIMAP->get()->messages)->Attachments)['name']; // name of attachment end(end($phpIMAP->get()->messages)->Attachments)['bytes']; // size of attachment in bytes end(end($phpIMAP->get()->messages)->Attachments)['attachment']; // content of the attachment already decoded end(end($phpIMAP->get()->messages)->Attachments)['encoding']; // encoding type of the attachment
saveAttachment
Vous pouvez sauvegarder un fichier localement avec la méthode saveAttachment. Si la sauvegarde se complète sans erreures, celle-ci retournera le répertoire complet du fichier.
// $phpIMAP->saveAttachment([ARRAY of File],[Destination Directory]) foreach(end($phpIMAP->get()->messages)->Attachments as $file){ if($path = $phpIMAP->saveAttachment($file,"tmp/")){ echo "Saved in ".$path; } }
Example
- exemple.php
//Import SMTP class into the global namespace //These must be at the top of your script, not inside a function use LaswitchTech\IMAP\phpIMAP; //Load Composer's autoloader require 'vendor/autoload.php'; $phpIMAP = new phpIMAP("mail.domain.com","993","ssl","username@domain.com","*******************",true); echo "Establishing Connection!\n"; // Check Connection Status if($phpIMAP->isConnected()){ echo "Connection Established!\n"; // Retrieve INBOX $results = $phpIMAP->get(); // Create a storage area for attachments $store = dirname(__FILE__) . '/tmp/'; if(!is_dir($store)){mkdir($store);} $store .= 'imap/'; if(!is_dir($store)){mkdir($store);} $store .= $phpIMAP->getUsername().'/'; if(!is_dir($store)){mkdir($store);} // Output some information of the last message if(!empty($results->messages)){ echo "Message Retrived!\n"; echo "=========================================================================================\n"; echo "ID: ".end($results->messages)->Header->message_id."\n"; if(isset(end($results->messages)->Header->in_reply_to)){echo "REPLY-TO: ".end($results->messages)->Header->in_reply_to."\n";} if(isset(end($results->messages)->Header->references)){echo "REFERENCES: ".end($results->messages)->Header->references."\n";} if(isset(end($results->messages)->Subject->PLAIN)){echo "SUBJECT: ".end($results->messages)->Subject->PLAIN."\n";} if(isset(end($results->messages)->Attachments->Count)){echo "ATTACHMENTS: ".end($results->messages)->Attachments->Count."\n";} echo "#########################################################################################\n"; echo end($results->messages)->Body->Unquoted."\n"; echo "#########################################################################################\n"; // Output all the attachements details foreach(end($results->messages)->Attachments->Files as $file){ echo "-----------------------------------------------------------------------------------------\n"; if(isset($file['filename'])){echo "FILENAME: ".$file['filename']."\n";} if(isset($file['name'])){echo "NAME: ".$file['name']."\n";} if(isset($file['bytes'])){echo "BYTES: ".$file['bytes']."\n";} // Create a storage area for message if(!is_dir($store.end($results->messages)->UID.'/')){mkdir($store.end($results->messages)->UID.'/');} if($path = $phpIMAP->saveAttachment($file,$store.end($results->messages)->UID.'/')){ echo "FILE: ".$path."\n"; } } echo "-----------------------------------------------------------------------------------------\n"; print_r(end($results->messages)->Meta->References->Plain); echo "\n"; print_r(end($results->messages)->Meta->References->Formatted); echo "\n"; } else {echo "No Messages!\n";} } else { echo "Connection Error!\n"; }
Mise à jours
Discussion