|
|
|
|
TUTORIEL PHP |
|
|
|
Conception d'un client de messagerie IMAP (1) |
Dans cette approche des fonctions IMAP de PHP sont abordés le téléchargement et l'affichage des e-mails du serveur.
(05/05/2005) |
|
On parcourt ensuite cette variable pour y chercher l'indicateur
"multipart", qui dénonce la présence d'un fichier. Dès cette
découverte, il nous faut traiter $message
pour en tirer la substantifique moelle. Si on ne trouve pas
"multipart", on ne fait que retirer les espaces au début et
à la fin du corps, pour l'hygiène.
if
(strtolower($message->ctype_primary) == "multipart") {
$body = trim($message->parts[0]->body);
$nbr_fichiers
= count($message->parts) - 1;
$taille_fichiers =
0;
for ($p = 1;
$p < count($message->parts); $p++)
$taille_fichiers
+= strlen($message->parts[$p]->body);
if ($nbr_fichiers
== 1)
$fichier
.= "\n\n[Un fichier. (".$taille_fichiers.")]";
else
$fichier
.= "\n\n[$nbr_fichiers fichiers. (".$taille_fichiers.")]";
}
else
{
$body = trim($message->body);
}
$body = substr($body, 0,
128).'...';
$body = nl2br($body);
On ne fait ici qu'indiquer dans le titre qu'il y a un (ou plusieurs)
fichiers, avec leur taille globale. Pour le moment, on ne se
souciera pas plus de leur présence. Dans les deux dernières
lignes, on choisit de n'afficher dans la prévisualisation duc
corps que ses 128 premiers octets, et on convertit les retours
à la ligne en <br>.
Enfin, on ferme :
}
}
imap_close($mail_cnx);
echo $i;
}
else {
?>Ca ne va pas!<?
}
?>
Affichage
Reste à créer le tableau et la fonction JavaScript nécessaires
au bon fonctionnement de ce petit lecteur.
Le tableau est très classique : on démarre sa structure avant
la boucle for(), on construit
chaque ligne à chaque itération de cette boucle, et on ferme
la structure en sortant de la boucle.
(...)
$body = substr($body, 0,
2048).'...';
$body = nl2br($body);
?>
<tr>
<td><?=$message->headers['date'];?></td>
<td><?=$message->headers['from'];?></td>
<td><a
href="javascript:afficherPrev('<?=$i;?>');">
<?=$message->headers['subject'];?></a></td>
</tr>
<tr style="display:none;"
id="<?=$i;?>">
<td colspan="3"><?=$body;?></td>
</tr>
<?php
}
}
imap_close($mail_cnx);
(...)
Nous ajoutons l'astuce visuelle : la ligne contenant le corps
du message est bien construire en HTML, mais nous utilisons
CSS pour ne pas l'afficher. Par défaut, ce programme n'affiche
que les en-têtes, et le lecteur a le loisir de prévisualiser
le message en cliquant sur le titre.
C'est là qu'entre en jeu JavaScript, avec une fonction qui alternativement
fait apparaître ou disparaître cette ligne du tableau :
<script>
function afficherPrev($id) {
var element = document.getElementById($id);
element.style.display = (element.style.display ==
"none") ? "table-row" : "none";
}
</script>
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
Le programme est maintenant fonctionnel. Lui manquent un système
de lecture plus complet, ainsi que toute la section de réponse
via SMTP, mais ce sera pour notre prochain article sur le sujet...
|
|
|
|
|
|
Quand achetez-vous le plus en ligne ? |
|
|
|
|
|
|
|
|