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

Tags

Discussion

Entrer votre commentaire:
I᠎ Y I V​ J