|
|
@@ -1,13 +1,16 @@
|
|
|
-<?xml version="1.0" encoding="utf-8"?>
|
|
|
-<!-- EN-Revision: 13593 -->
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
+<!-- EN-Revision: 15341 -->
|
|
|
<!-- Reviewed: no -->
|
|
|
<sect1 id="zend.mail.read">
|
|
|
<title>Lire des émail</title>
|
|
|
|
|
|
- <para><classname>Zend_Mail</classname> peut lire des émail provenant de différents stockages locaux ou distants. Tous
|
|
|
- bénéficient de la même API pour compter et extraire les messages, certains implémentent des interfaces
|
|
|
- additionnelles pour des fonctionnalités moins communes. Pour une vue d'ensemble des fonctionnalités des stockages
|
|
|
- implémentés voir la table suivante.</para>
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Mail</classname> peut lire des émail provenant de différents stockages
|
|
|
+ locaux ou distants. Tous bénéficient de la même API pour compter et extraire les messages,
|
|
|
+ certains implémentent des interfaces additionnelles pour des fonctionnalités moins communes.
|
|
|
+ Pour une vue d'ensemble des fonctionnalités des stockages implémentés voir la table
|
|
|
+ suivante.
|
|
|
+ </para>
|
|
|
|
|
|
<table id="zend.mail.read.table-1">
|
|
|
<title>Vue d'ensemble des fonctionnalités de lecture d'émail</title>
|
|
|
@@ -133,11 +136,15 @@ foreach ($mail as $message) {
|
|
|
<sect2 id="zend.mail.read-open-local">
|
|
|
<title>Ouvrir un stockage local</title>
|
|
|
|
|
|
- <para>Mbox et Maildir sont les deux formats supportés pour le stockage local des émail, tous les deux dans leurs
|
|
|
- formats le plus simple.</para>
|
|
|
+ <para>
|
|
|
+ Mbox et Maildir sont les deux formats supportés pour le stockage local des émail,
|
|
|
+ tous les deux dans leurs formats le plus simple.
|
|
|
+ </para>
|
|
|
|
|
|
- <para>Si vous voulez lire un fichier Mbox, vous devez juste donner le nom du fichier au constructeur de
|
|
|
- <classname>Zend_Mail_Storage_Mbox</classname>:</para>
|
|
|
+ <para>
|
|
|
+ Si vous voulez lire un fichier Mbox, vous devez juste donner le nom du fichier au
|
|
|
+ constructeur de <classname>Zend_Mail_Storage_Mbox</classname>:
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
$mail =
|
|
|
@@ -151,16 +158,21 @@ $mail =
|
|
|
new Zend_Mail_Storage_Maildir(array('dirname' => '/home/test/mail/'));
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Ces deux constructeurs lèvent une exception <classname>Zend_Mail_Exception</classname> si le stockage ne peut pas
|
|
|
- être lu.</para>
|
|
|
+ <para>
|
|
|
+ Ces deux constructeurs lèvent une exception
|
|
|
+ <classname>Zend_Mail_Exception</classname> si le stockage ne peut pas être lu.
|
|
|
+ </para>
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.mail.read-open-remote">
|
|
|
<title>Ouvrir un stockage distant</title>
|
|
|
|
|
|
- <para>Pour les stockages distants les deux protocoles les plus populaires sont supportés : Pop3 et Imap. Les
|
|
|
- deux nécessitent au moins un hôte et un utilisateur pour se connecter et s'identifier. Le mot de passe par
|
|
|
- défaut est une chaîne vide et le port par défaut celui donné dans la RFC du protocole.</para>
|
|
|
+ <para>
|
|
|
+ Pour les stockages distants les deux protocoles les plus populaires sont supportés
|
|
|
+ : Pop3 et Imap. Les deux nécessitent au moins un hôte et un utilisateur pour se
|
|
|
+ connecter et s'identifier. Le mot de passe par défaut est une chaîne vide et le port par
|
|
|
+ défaut celui donné dans la RFC du protocole.
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// connexion à Pop3
|
|
|
@@ -180,8 +192,10 @@ $mail = new Zend_Mail_Storage_Pop3(array('host' => 'exemple.com',
|
|
|
'password' => 'test'));
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Pour ces deux stockages SSL et TLS sont supportés. Si vous utilisez SSL le port par défaut change comme
|
|
|
- indiqué dans la RFC.</para>
|
|
|
+ <para>
|
|
|
+ Pour ces deux stockages SSL et TLS sont supportés. Si vous utilisez SSL le port
|
|
|
+ par défaut change comme indiqué dans la RFC.
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// exemples pour Zend_Mail_Storage_Pop3,
|
|
|
@@ -201,31 +215,43 @@ $mail = new Zend_Mail_Storage_Pop3(array('host' => 'exemple.com'
|
|
|
'ssl' => 'TLS'));
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Les deux constructeurs peuvent lever une exception <classname>Zend_Mail_Exception</classname> ou
|
|
|
- <classname>Zend_Mail_Protocol_Exception</classname>(étendant <classname>Zend_Mail_Exception</classname>), en fonction du type de
|
|
|
- l'erreur.</para>
|
|
|
+ <para>
|
|
|
+ Les deux constructeurs peuvent lever une exception
|
|
|
+ <classname>Zend_Mail_Exception</classname> ou
|
|
|
+ <classname>Zend_Mail_Protocol_Exception</classname>(étendant
|
|
|
+ <classname>Zend_Mail_Exception</classname>), en fonction du type de l'erreur.
|
|
|
+ </para>
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.mail.read-fetching">
|
|
|
<title>Extraire des messages et autres méthodes simples</title>
|
|
|
|
|
|
- <para>Dès que vous avez ouvert l'accès, les messages peuvent être extraits. Vous devez fournir un numéro de
|
|
|
- message, qui est un compteur qui démarre à 1 pour le premier message. Pour extraire le message vous utilisez la
|
|
|
- méthode <code>getMessage()</code> :</para>
|
|
|
+ <para>
|
|
|
+ Dès que vous avez ouvert l'accès, les messages peuvent être extraits. Vous devez
|
|
|
+ fournir un numéro de message, qui est un compteur qui démarre à 1 pour le premier
|
|
|
+ message. Pour extraire le message vous utilisez la méthode <code>getMessage()</code>
|
|
|
+ :
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
$message = $mail->getMessage($numeroDeMessage);
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>L'accès sous forme de tableau est aussi supporté, mais cet méthode d'accès ne supporte pas les paramètres additionnels qui
|
|
|
- aurait pu être ajouté à <code>getMessage()</code>. Tant que vous n'en n'avez pas besoin et que vous pouvez vivre
|
|
|
- avec les valeurs par défaut, vous pouvez utiliser :</para>
|
|
|
+ <para>
|
|
|
+ L'accès sous forme de tableau est aussi supporté, mais cet méthode d'accès ne
|
|
|
+ supporte pas les paramètres additionnels qui aurait pu être ajouté à
|
|
|
+ <code>getMessage()</code>. Tant que vous n'en n'avez pas besoin et que vous pouvez vivre
|
|
|
+ avec les valeurs par défaut, vous pouvez utiliser :
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
$message = $mail[$numeroDeMessage];
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Pour itérer tous les messages, l'interface <code>Iterator</code> est implémentée :</para>
|
|
|
+ <para>
|
|
|
+ Pour itérer tous les messages, l'interface <code>Iterator</code> est implémentée
|
|
|
+ :
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
foreach ($mail as $numeroDeMessage => $message) {
|
|
|
@@ -233,8 +259,10 @@ foreach ($mail as $numeroDeMessage => $message) {
|
|
|
}
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Pour compter les messages dans le stockage, vous pouvez soit utiliser la méthode
|
|
|
- <code>countMessages()</code> ou utiliser l'accès de type tableau :</para>
|
|
|
+ <para>
|
|
|
+ Pour compter les messages dans le stockage, vous pouvez soit utiliser la méthode
|
|
|
+ <code>countMessages()</code> ou utiliser l'accès de type tableau :
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// par méthode
|
|
|
@@ -244,8 +272,10 @@ $maxMessage = $mail->countMessages();
|
|
|
$maxMessage = count($mail);
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Pour supprimer un mail vous pouvez utiliser la méthode <code>removeMessage()</code> ou l'accès de type
|
|
|
- tableau :</para>
|
|
|
+ <para>
|
|
|
+ Pour supprimer un mail vous pouvez utiliser la méthode
|
|
|
+ <code>removeMessage()</code> ou l'accès de type tableau :
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// méthode
|
|
|
@@ -259,14 +289,18 @@ unset($mail[$messageNum]);
|
|
|
<sect2 id="zend.mail.read-message">
|
|
|
<title>Travailler avec les messages</title>
|
|
|
|
|
|
- <para>Après avoir extrait les messages avec <code>getMessage()</code> vous voulez extraire les en-têtes, le
|
|
|
- contenu ou une partie d'un message multipart. Tous les en-têtes peuvent être accédés via les propriétés ou la
|
|
|
- méthode <code>getHeader()</code> si vous voulez plus de contrôle ou avoir accès à des en-têtes peu communs. Les
|
|
|
- noms des en-têtes gérés en interne avec une casse minuscule, ainsi la casse du nom de l'en-tête importe peu. En
|
|
|
- outre les en-têtes avec un tiret-bas peuvent être écrit avec la <ulink
|
|
|
- url="http://en.wikipedia.org/wiki/CamelCase">notation Camel</ulink>. Si aucun en-tête n'est trouvé pour les deux
|
|
|
- notations, une exception est levée. Pour éviter ceci, la méthode <code>headerExists()</code> peut être utilisée
|
|
|
- pour vérifier l'existence d'un en-tête.</para>
|
|
|
+ <para>
|
|
|
+ Après avoir extrait les messages avec <code>getMessage()</code> vous voulez
|
|
|
+ extraire les en-têtes, le contenu ou une partie d'un message multipart. Tous les
|
|
|
+ en-têtes peuvent être accédés via les propriétés ou la méthode <code>getHeader()</code>
|
|
|
+ si vous voulez plus de contrôle ou avoir accès à des en-têtes peu communs. Les noms des
|
|
|
+ en-têtes gérés en interne avec une casse minuscule, ainsi la casse du nom de l'en-tête
|
|
|
+ importe peu. En outre les en-têtes avec un tiret-bas peuvent être écrit avec la <ulink
|
|
|
+ url="http://en.wikipedia.org/wiki/CamelCase">notation Camel</ulink>. Si aucun en-tête
|
|
|
+ n'est trouvé pour les deux notations, une exception est levée. Pour éviter ceci, la
|
|
|
+ méthode <code>headerExists()</code> peut être utilisée pour vérifier l'existence d'un
|
|
|
+ en-tête.
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// récupérer l'objet message
|
|
|
@@ -284,9 +318,11 @@ if( isset($message->cc) ) { // ou $message->headerExists('cc');
|
|
|
}
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Si vous avez plusieurs en-têtes avec le même nom, par exemple les en-têtes "Received", vous pourriez les
|
|
|
- vouloir sous la forme d'un tableau plutôt qu'en tant que chaîne. Ceci est possible avec la méthode
|
|
|
- <code>getHeader()</code>.</para>
|
|
|
+ <para>
|
|
|
+ Si vous avez plusieurs en-têtes avec le même nom, par exemple les en-têtes
|
|
|
+ "Received", vous pourriez les vouloir sous la forme d'un tableau plutôt qu'en tant que
|
|
|
+ chaîne. Ceci est possible avec la méthode <code>getHeader()</code>.
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// récupérer l'en-tête comme une propriété - le résultat est toujours
|
|
|
@@ -311,9 +347,11 @@ if (is_string($received)) {
|
|
|
}
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>La méthode <code>getHeaders()</code> retourne tous les headers sous forme de tableau avec des clés en
|
|
|
- minuscules et des valeurs en tant que tableau pour des en-têtes multiples ou une chaîne pour des en-têtes
|
|
|
- uniques.</para>
|
|
|
+ <para>
|
|
|
+ La méthode <code>getHeaders()</code> retourne tous les headers sous forme de
|
|
|
+ tableau avec des clés en minuscules et des valeurs en tant que tableau pour des en-têtes
|
|
|
+ multiples ou une chaîne pour des en-têtes uniques.
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// récupère tous les en-têtes
|
|
|
@@ -328,9 +366,11 @@ foreach ($message->getHeaders() as $name => $value) {
|
|
|
}
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Si vous n'avez pas de message de type multipart, extraire le contenu est facilité avec
|
|
|
- <code>getContent()</code>. A la différence des en-têtes, le contenu est seulement extrait en cas de besoin (alias
|
|
|
- late-fetch).</para>
|
|
|
+ <para>
|
|
|
+ Si vous n'avez pas de message de type multipart, extraire le contenu est facilité
|
|
|
+ avec <code>getContent()</code>. A la différence des en-têtes, le contenu est seulement
|
|
|
+ extrait en cas de besoin (alias late-fetch).
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// affiche le contenu du message
|
|
|
@@ -339,12 +379,16 @@ echo $message->getContent();
|
|
|
echo '</pre>';
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Vérifier si un message est de type multipart est réalisé avec la méthode <code>isMultipart()</code>. Si
|
|
|
- vous avez un message de type multipart vous pouvez récupérer une instance de <classname>Zend_Mail_Part</classname> avec la
|
|
|
- méthode <code>getPart()</code>. <classname>Zend_Mail_Part</classname> est la classe de base de
|
|
|
- <classname>Zend_Mail_Message</classname>, donc vous avez les mêmes méthodes : <code>getHeader()</code>,
|
|
|
- <code>getHeaders()</code>, <code>getContent()</code>, <code>getPart()</code>, <code>isMultipart</code> et les
|
|
|
- propriétés pour les en-têtes.</para>
|
|
|
+ <para>
|
|
|
+ Vérifier si un message est de type multipart est réalisé avec la méthode
|
|
|
+ <code>isMultipart()</code>. Si vous avez un message de type multipart vous pouvez
|
|
|
+ récupérer une instance de <classname>Zend_Mail_Part</classname> avec la méthode
|
|
|
+ <code>getPart()</code>. <classname>Zend_Mail_Part</classname> est la classe de base de
|
|
|
+ <classname>Zend_Mail_Message</classname>, donc vous avez les mêmes méthodes :
|
|
|
+ <code>getHeader()</code>, <code>getHeaders()</code>, <code>getContent()</code>,
|
|
|
+ <code>getPart()</code>, <code>isMultipart</code> et les propriétés pour les
|
|
|
+ en-têtes.
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// récupérer la première partie non-multipart
|
|
|
@@ -359,9 +403,12 @@ echo "Contenu :\n";
|
|
|
echo $part->getContent();
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para><classname>Zend_Mail_Part</classname> implémente aussi <code>RecursiveIterator</code>, qui rend facile le scan de
|
|
|
- toutes les parties. Et pour un affichage facile, il implémente de plus la méthode magique
|
|
|
- <code>__toString()</code> qui retourne le contenu.</para>
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Mail_Part</classname> implémente aussi
|
|
|
+ <code>RecursiveIterator</code>, qui rend facile le scan de toutes les parties. Et pour
|
|
|
+ un affichage facile, il implémente de plus la méthode magique <code>__toString()</code>
|
|
|
+ qui retourne le contenu.
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// affiche la première partie de type text/plain=
|
|
|
@@ -387,11 +434,15 @@ if (!$foundPart) {
|
|
|
<sect2 id="zend.mail.read-flags">
|
|
|
<title>Vérifier les drapeaux ("flags")</title>
|
|
|
|
|
|
- <para>Maildir et IMAP supporte l'enregistrement de drapeaux. La classe <classname>Zend_Mail_Storage</classname> possède
|
|
|
- des constantes pour tous les drapeaux maildir et IMAP connus, nommés
|
|
|
- <classname>Zend_Mail_Storage::FLAG_<nomdudrapeau></classname>. Pour vérifier les drapeaux
|
|
|
- <classname>Zend_Mail_Message</classname> possède une méthode <code>hasFlag()</code>. Avec <code>getFlags()</code> vous
|
|
|
- récupérez tous les drapeaux existants.</para>
|
|
|
+ <para>
|
|
|
+ Maildir et IMAP supporte l'enregistrement de drapeaux. La classe
|
|
|
+ <classname>Zend_Mail_Storage</classname> possède des constantes pour tous les drapeaux
|
|
|
+ maildir et IMAP connus, nommés
|
|
|
+ <classname>Zend_Mail_Storage::FLAG_<nomdudrapeau></classname>. Pour vérifier les
|
|
|
+ drapeaux <classname>Zend_Mail_Message</classname> possède une méthode
|
|
|
+ <code>hasFlag()</code>. Avec <code>getFlags()</code> vous récupérez tous les drapeaux
|
|
|
+ existants.
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// trouvé les messages non lus
|
|
|
@@ -431,9 +482,12 @@ foreach ($flags as $flag) {
|
|
|
}
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Comme IMAP autorise les drapeaux définis par client ou l'utilisateur, vous pouvez obtenir ces drapeaux
|
|
|
- même s'ils n'ont pas de constante dans <classname>Zend_Mail_Storage</classname>. Au lieu de cela ils sont retournés comme
|
|
|
- une chaîne et peuvent être vérifiés de la même manière avec <code>hasFlag()</code>.</para>
|
|
|
+ <para>
|
|
|
+ Comme IMAP autorise les drapeaux définis par client ou l'utilisateur, vous pouvez
|
|
|
+ obtenir ces drapeaux même s'ils n'ont pas de constante dans
|
|
|
+ <classname>Zend_Mail_Storage</classname>. Au lieu de cela ils sont retournés comme une
|
|
|
+ chaîne et peuvent être vérifiés de la même manière avec <code>hasFlag()</code>.
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// Vérifie le message avec les drapeaux $EstUnSpam, $SpamTeste
|
|
|
@@ -450,20 +504,29 @@ if (!$message->hasFlag('$SpamTeste')) {
|
|
|
<sect2 id="zend.mail.read-folders">
|
|
|
<title>Utiliser les dossiers</title>
|
|
|
|
|
|
- <para>Tous les stockages, excepté Pop3, supportent les dossiers, également appelés boîtes aux lettres.
|
|
|
- L'interface implémentée par tous les stockages supportant les dossiers s'appelle
|
|
|
- <classname>Zend_Mail_Storage_Folder_Interface</classname>. En outre toutes ces classes ont un paramètre facultatif
|
|
|
- additionnel appelé <code>folder</code>, qui est le dossier choisi après ouverture, dans le constructeur.</para>
|
|
|
-
|
|
|
- <para>Pour les stockages locaux vous devez employer les classes séparées appelées
|
|
|
- <classname>Zend_Mail_Storage_Folder_Mbox</classname> ou <classname>Zend_Mail_Storage_Folder_Maildir</classname>. Tous les deux ont
|
|
|
- besoin d'un paramètre nommé <code>dirname</code> avec le nom du dossier de base. Le format pour le maildir est
|
|
|
- comme définie dans maildir++ (avec un point comme délimiteur par défaut), Mbox est une hiérarchie de dossiers
|
|
|
- avec des fichiers Mbox. Si vous n'avez pas un dossier de Mbox appelé INBOX dans votre dossier de base Mbox vous
|
|
|
- devez placer un autre dossier dans le constructeur.</para>
|
|
|
-
|
|
|
- <para><classname>Zend_Mail_Storage_Imap</classname> supporte déjà des dossiers par défaut. Exemples pour ouvrir ces
|
|
|
- stockages :</para>
|
|
|
+ <para>
|
|
|
+ Tous les stockages, excepté Pop3, supportent les dossiers, également appelés
|
|
|
+ boîtes aux lettres. L'interface implémentée par tous les stockages supportant les
|
|
|
+ dossiers s'appelle <classname>Zend_Mail_Storage_Folder_Interface</classname>. En outre
|
|
|
+ toutes ces classes ont un paramètre facultatif additionnel appelé <code>folder</code>,
|
|
|
+ qui est le dossier choisi après ouverture, dans le constructeur.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Pour les stockages locaux vous devez employer les classes séparées appelées
|
|
|
+ <classname>Zend_Mail_Storage_Folder_Mbox</classname> ou
|
|
|
+ <classname>Zend_Mail_Storage_Folder_Maildir</classname>. Tous les deux ont besoin d'un
|
|
|
+ paramètre nommé <code>dirname</code> avec le nom du dossier de base. Le format pour le
|
|
|
+ maildir est comme définie dans maildir++ (avec un point comme délimiteur par défaut),
|
|
|
+ Mbox est une hiérarchie de dossiers avec des fichiers Mbox. Si vous n'avez pas un
|
|
|
+ dossier de Mbox appelé INBOX dans votre dossier de base Mbox vous devez placer un autre
|
|
|
+ dossier dans le constructeur.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Mail_Storage_Imap</classname> supporte déjà des dossiers par
|
|
|
+ défaut. Exemples pour ouvrir ces stockages :
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// mbox avec dossiers
|
|
|
@@ -494,13 +557,16 @@ $mail = new Zend_Mail_Storage_Imap(array('host' => 'example.com',
|
|
|
'password' => 'test'));
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Avec la méthode <code>getFolders($root = null)</code> vous pouvez obtenir la hiérarchie des dossiers en
|
|
|
- commençant par le dossier racine ou le dossier fourni. Elle est retournée comme instance de
|
|
|
- <classname>Zend_Mail_Storage_Folder</classname>, qui implémente <code>RecursiveIterator</code> et tous ses enfants sont
|
|
|
- également des instances de <classname>Zend_Mail_Storage_Folder</classname>. Chacune de ces instances à des noms locaux et
|
|
|
- globaux retournés par les méthodes <code>getLocalName()</code> et <code>getGlobalName()</code>. Le nom global
|
|
|
- est le nom absolu du dossier racine (délimiteurs y compris), le nom local est le nom dans le dossier
|
|
|
- parent.</para>
|
|
|
+ <para>
|
|
|
+ Avec la méthode <code>getFolders($root = null)</code> vous pouvez obtenir la
|
|
|
+ hiérarchie des dossiers en commençant par le dossier racine ou le dossier fourni. Elle
|
|
|
+ est retournée comme instance de <classname>Zend_Mail_Storage_Folder</classname>, qui
|
|
|
+ implémente <code>RecursiveIterator</code> et tous ses enfants sont également des
|
|
|
+ instances de <classname>Zend_Mail_Storage_Folder</classname>. Chacune de ces instances à
|
|
|
+ des noms locaux et globaux retournés par les méthodes <code>getLocalName()</code> et
|
|
|
+ <code>getGlobalName()</code>. Le nom global est le nom absolu du dossier racine
|
|
|
+ (délimiteurs y compris), le nom local est le nom dans le dossier parent.
|
|
|
+ </para>
|
|
|
|
|
|
<table id="zend.mail.read-folders.table-1">
|
|
|
<title>Noms de dossiers</title>
|
|
|
@@ -536,11 +602,14 @@ $mail = new Zend_Mail_Storage_Imap(array('host' => 'example.com',
|
|
|
</tgroup>
|
|
|
</table>
|
|
|
|
|
|
- <para>Si vous employez l'itérateur, la clé de l'élément courant est le nom local. Le nom global est également
|
|
|
- retourné par la méthode magique <code>__toString()</code>. Quelques dossiers peuvent ne pas être
|
|
|
- sélectionnables, ce qui veut dire qu'ils ne peuvent pas stocker des messages et les choisir entraînerait une
|
|
|
- erreur. Ceci peut être vérifié avec la méthode <code>isSelectable()</code>. Ainsi il est très facile de produire
|
|
|
- l'arbre entier dans une vue :</para>
|
|
|
+ <para>
|
|
|
+ Si vous employez l'itérateur, la clé de l'élément courant est le nom local. Le nom
|
|
|
+ global est également retourné par la méthode magique <code>__toString()</code>. Quelques
|
|
|
+ dossiers peuvent ne pas être sélectionnables, ce qui veut dire qu'ils ne peuvent pas
|
|
|
+ stocker des messages et les choisir entraînerait une erreur. Ceci peut être vérifié avec
|
|
|
+ la méthode <code>isSelectable()</code>. Ainsi il est très facile de produire l'arbre
|
|
|
+ entier dans une vue :
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
$folders = new RecursiveIteratorIterator(
|
|
|
@@ -561,10 +630,13 @@ foreach ($folders as $localName => $folder) {
|
|
|
echo '</select>';
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Les dossiers choisis courants sont retournés par la méthode <code>getSelectedFolder()</code>. Changer de
|
|
|
- dossier est fait avec la méthode <code>selectFolder()</code>, qui a besoin du nom global comme paramètre. Si
|
|
|
- vous voulez éviter d'écrire des délimiteurs vous pouvez également employer les propriétés d'une instance de
|
|
|
- <classname>Zend_Mail_Storage_Folder</classname> :</para>
|
|
|
+ <para>
|
|
|
+ Les dossiers choisis courants sont retournés par la méthode
|
|
|
+ <code>getSelectedFolder()</code>. Changer de dossier est fait avec la méthode
|
|
|
+ <code>selectFolder()</code>, qui a besoin du nom global comme paramètre. Si vous voulez
|
|
|
+ éviter d'écrire des délimiteurs vous pouvez également employer les propriétés d'une
|
|
|
+ instance de <classname>Zend_Mail_Storage_Folder</classname> :
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// selon votre stockage et ses réglages $rootFolder->Archive->2005
|
|
|
@@ -587,8 +659,10 @@ $mail->selectFolder($folder);
|
|
|
<sect3 id="zend.mail.read-advanced.noop">
|
|
|
<title>Utiliser NOOP</title>
|
|
|
|
|
|
- <para>Si vous employez un stockage distant et avez une longue tâche vous pourriez devoir maintenir la
|
|
|
- connexion persistante par l'intermédiaire du noop :</para>
|
|
|
+ <para>
|
|
|
+ Si vous employez un stockage distant et avez une longue tâche vous pourriez
|
|
|
+ devoir maintenir la connexion persistante par l'intermédiaire du noop :
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
foreach ($mail as $message) {
|
|
|
@@ -607,15 +681,21 @@ foreach ($mail as $message) {
|
|
|
<sect3 id="zend.mail.read-advanced.extending">
|
|
|
<title>Mettre en cache des instances</title>
|
|
|
|
|
|
- <para><classname>Zend_Mail_Storage_Mbox</classname>, <classname>Zend_Mail_Storage_Folder_Mbox</classname>,
|
|
|
- <classname>Zend_Mail_Storage_Maildir</classname> et <classname>Zend_Mail_Storage_Folder_Maildir</classname> implémentant les
|
|
|
- méthodes magiques <code>__sleep()</code> et <code>__wakeup()</code>, ce qui veut dire qu'ils sont
|
|
|
- sérialisable. Ceci évite d'analyser les dossiers ou l'arbre des dossiers plus d'une fois. L'inconvénient est
|
|
|
- que votre stockage de Mbox ou de Maildir ne doit pas changer. Quelques contrôles faciles sont faits, comme
|
|
|
- ré-analyser le dossier courant de Mbox si le temps de modification change ou ré-analysé la structure du
|
|
|
- dossier si un dossier a disparu (ce qui a toujours comme conséquence une erreur, mais vous pouvez rechercher
|
|
|
- un autre dossier après). Il est meilleur si vous avez quelque chose comme un fichier de signal pour des
|
|
|
- changements et la vérifiez avant d'employer l'instance caché.</para>
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Mail_Storage_Mbox</classname>,
|
|
|
+ <classname>Zend_Mail_Storage_Folder_Mbox</classname>,
|
|
|
+ <classname>Zend_Mail_Storage_Maildir</classname> et
|
|
|
+ <classname>Zend_Mail_Storage_Folder_Maildir</classname> implémentant les méthodes
|
|
|
+ magiques <code>__sleep()</code> et <code>__wakeup()</code>, ce qui veut dire qu'ils
|
|
|
+ sont sérialisable. Ceci évite d'analyser les dossiers ou l'arbre des dossiers plus
|
|
|
+ d'une fois. L'inconvénient est que votre stockage de Mbox ou de Maildir ne doit pas
|
|
|
+ changer. Quelques contrôles faciles sont faits, comme ré-analyser le dossier courant
|
|
|
+ de Mbox si le temps de modification change ou ré-analysé la structure du dossier si
|
|
|
+ un dossier a disparu (ce qui a toujours comme conséquence une erreur, mais vous
|
|
|
+ pouvez rechercher un autre dossier après). Il est meilleur si vous avez quelque
|
|
|
+ chose comme un fichier de signal pour des changements et la vérifiez avant
|
|
|
+ d'employer l'instance caché.
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// il n'y a pas de gestionnaire spécifique de cache utilisé ici,
|
|
|
@@ -643,14 +723,21 @@ $cache->set($cache_id, $mail);
|
|
|
<sect3>
|
|
|
<title>Étendre les classes de protocoles</title>
|
|
|
|
|
|
- <para>Les stockages distants utilisent deux classes : <classname>Zend_Mail_Storage_<NOM></classname> et
|
|
|
- <classname>Zend_Mail_Protocol_<NOM></classname>. La classe de protocole traduit les commandes et les réponses de
|
|
|
- protocole et issu de ou pour PHP, comme des méthodes pour les commandes ou les variables avec différentes
|
|
|
- structures pour les données. L'autre/classe principale met en application l'interface commune.</para>
|
|
|
-
|
|
|
- <para>Si vous avez besoin de fonctionnalités additionnelles de protocole vous pouvez étendre la classe de
|
|
|
- protocole et l'employer dans le constructeur de la classe principale. Supposer par exemple que nous devons
|
|
|
- joindre différents ports avant que nous puissions nous relier à POP3.</para>
|
|
|
+ <para>
|
|
|
+ Les stockages distants utilisent deux classes :
|
|
|
+ <classname>Zend_Mail_Storage_<NOM></classname> et
|
|
|
+ <classname>Zend_Mail_Protocol_<NOM></classname>. La classe de protocole
|
|
|
+ traduit les commandes et les réponses de protocole et issu de ou pour PHP, comme des
|
|
|
+ méthodes pour les commandes ou les variables avec différentes structures pour les
|
|
|
+ données. L'autre/classe principale met en application l'interface commune.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Si vous avez besoin de fonctionnalités additionnelles de protocole vous pouvez
|
|
|
+ étendre la classe de protocole et l'employer dans le constructeur de la classe
|
|
|
+ principale. Supposer par exemple que nous devons joindre différents ports avant que
|
|
|
+ nous puissions nous relier à POP3.
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
Zend_Loader::loadClass('Zend_Mail_Storage_Pop3');
|
|
|
@@ -724,24 +811,33 @@ $mail = new Example_Mail_Pop3_Knock(
|
|
|
);
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Comme vous voyez nous supposons toujours que nous sommes reliés, identifiés et, si supporté, un
|
|
|
- dossier est choisi dans le constructeur de la classe principale. Ainsi si vous assignez votre propre classe
|
|
|
- de protocole vous devez toujours vous assurer que c'est fait ou la prochaine méthode échouera si le serveur
|
|
|
- ne la permet pas dans l'état actuel.</para>
|
|
|
+ <para>
|
|
|
+ Comme vous voyez nous supposons toujours que nous sommes reliés, identifiés
|
|
|
+ et, si supporté, un dossier est choisi dans le constructeur de la classe principale.
|
|
|
+ Ainsi si vous assignez votre propre classe de protocole vous devez toujours vous
|
|
|
+ assurer que c'est fait ou la prochaine méthode échouera si le serveur ne la permet
|
|
|
+ pas dans l'état actuel.
|
|
|
+ </para>
|
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="zend.mail.read-advanced.quota">
|
|
|
<title>Utilisation des Quotas (avant 1.5)</title>
|
|
|
|
|
|
- <para><classname>Zend_Mail_Storage_Writable_Maildir</classname> supporte les quotas Maildir++. Ceci est désactivé par
|
|
|
- défaut, mais il est possible de l'utiliser manuellement, si la vérification automatique n'est pas souhaitée
|
|
|
- (ce qui veut dire que <code>appendMessage()</code>, <code>removeMessage()</code> et
|
|
|
- <code>copyMessage()</code> ne vérifie pas et n'ajoute pas d'entrée dans le fichier de contrôle de la taille
|
|
|
- du dossier de mails). Si vous l'activez une exception sera levée si vous tentez d'écrire dans le dossier de
|
|
|
- mails et qu'il a déjà atteint son quota.</para>
|
|
|
-
|
|
|
- <para>Il existe trois méthodes pour les quotas : <code>getQuota()</code>, <code>setQuota()</code> et
|
|
|
- <code>checkQuota()</code>:</para>
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Mail_Storage_Writable_Maildir</classname> supporte les quotas
|
|
|
+ Maildir++. Ceci est désactivé par défaut, mais il est possible de l'utiliser
|
|
|
+ manuellement, si la vérification automatique n'est pas souhaitée (ce qui veut dire
|
|
|
+ que <code>appendMessage()</code>, <code>removeMessage()</code> et
|
|
|
+ <code>copyMessage()</code> ne vérifie pas et n'ajoute pas d'entrée dans le fichier
|
|
|
+ de contrôle de la taille du dossier de mails). Si vous l'activez une exception sera
|
|
|
+ levée si vous tentez d'écrire dans le dossier de mails et qu'il a déjà atteint son
|
|
|
+ quota.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Il existe trois méthodes pour les quotas : <code>getQuota()</code>,
|
|
|
+ <code>setQuota()</code> et <code>checkQuota()</code>:
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
$mail = new Zend_Mail_Storage_Writable_Maildir(
|
|
|
@@ -758,7 +854,10 @@ echo 'Vous êtes ',
|
|
|
"\n";
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para><code>checkQuota()</code> peut aussi retournée une réponse plus détaillée :</para>
|
|
|
+ <para>
|
|
|
+ <code>checkQuota()</code> peut aussi retournée une réponse plus détaillée
|
|
|
+ :
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
$quota = $mail->checkQuota(true);
|
|
|
@@ -773,8 +872,11 @@ echo 'Vous avez ',
|
|
|
echo $quota['size'], ' de ', $quota['quota']['size'], ' octets';
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Si vous voulez spécifier votre propre quota plutôt que d'utiliser celui spécifié dans le fichier de
|
|
|
- contrôle de la taille du dossier de mails, vous pouvez le faire avec <code>setQuota()</code> :</para>
|
|
|
+ <para>
|
|
|
+ Si vous voulez spécifier votre propre quota plutôt que d'utiliser celui
|
|
|
+ spécifié dans le fichier de contrôle de la taille du dossier de mails, vous pouvez
|
|
|
+ le faire avec <code>setQuota()</code> :
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
// le nombre de messages et la taille en octet sont supportés,
|
|
|
@@ -782,10 +884,14 @@ echo $quota['size'], ' de ', $quota['quota']['size'], ' octets';
|
|
|
$quota = $mail->setQuota(array('size' => 10000, 'count' => 100));
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>Pour ajouter vos propres vérifications de quota, utilisez des caractères uniques en tant que clé et
|
|
|
- ils seront préservés (mais évidemment non vérifié). Il est aussi possible d'étendre
|
|
|
- <classname>Zend_Mail_Storage_Writable_Maildir</classname> pour définir votre propre quota seulement si le fichier de
|
|
|
- contrôle de la taille du dossier de mails est absent (qui peut se produire dans Maildir++) :</para>
|
|
|
+ <para>
|
|
|
+ Pour ajouter vos propres vérifications de quota, utilisez des caractères
|
|
|
+ uniques en tant que clé et ils seront préservés (mais évidemment non vérifié). Il
|
|
|
+ est aussi possible d'étendre
|
|
|
+ <classname>Zend_Mail_Storage_Writable_Maildir</classname> pour définir votre propre
|
|
|
+ quota seulement si le fichier de contrôle de la taille du dossier de mails est
|
|
|
+ absent (qui peut se produire dans Maildir++) :
|
|
|
+ </para>
|
|
|
|
|
|
<programlisting role="php"><![CDATA[
|
|
|
class Exemple_Mail_Storage_Maildir extends Zend_Mail_Storage_Writable_Maildir {
|