Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Home ~ Php :: Un client di posta elettronica in PHP. Parte II. :: Indice Php

Un client di posta elettronica in PHP. Parte II.

Categoria: Php Inserito il: 15-11-2006 Stampa (10413 click)

Per visualizzare il testo di ogni e-mail pervenuta nel nostro server di posta, creeremo un file in grado di leggere un determinato messaggio il cui 'Id' gli verrą comunicato tramite il metodo GET.

Inoltre, il file per la lettura delle email sarą in grado di rilevare la presenza di allegati e in caso di esito positivo, di creare un link per il download di questi ultimi:

<?php
if (isset($_GET['id']))
{
  $var = $_GET['id'];
}
@include 'cnf.php';
$fetchstructure = @imap_fetchstructure($conn, $var);

$v1 = "0";
$i = "";
$ctrl = 0;
$ed = 0;
$mail_or_link = 0;

foreach($fetchstructure as $k => $val)
{
  if (($ctrl=="") && ($k=="subtype"))
  {
    if ($val=="RELATED")
    {
      $i = ".2";
      $ctrl=1;
    }
    if ($val=="MIXED")
    {
      $i = ".2";
      $ctrl=1;
      $ed=1;
      echo "<b>Allegati:</b> ";
    }
  }
  if ($k=="parts")
  {
    $items = $fetchstructure -> parts;
    foreach($items as $k0 => $val0)
    {
      $v1 = $v1+1;
      foreach($val0 as $k1 => $val1)
      {
        if (($k1=="disposition") && ($val1=="ATTACHMENT"))
        {
          $atch = $fetchstructure -> parts[$v1-1] -> dparameters[0] -> value;
          echo "<a href=\"attach.php?id=$var&item=".$v1."\">".$atch."</a>";
        }
      } 
    }
  }
}
if ($v1=="0")
{
  $v1 = 1;
  $mail_or_link=1;
}
if ($ed)
{
  $v1=1;
  echo "<br /><br />";
}
$string=@imap_fetchbody($conn, $var, $v1.$i);
$string=@quoted_printable_decode(@str_replace("=\r\n","",$string));
if ($mail_or_link=="")
{
  echo $string;
}else{
  $word="";
  $row = @explode("\n", $string);
  for ($inc=0;$inc<@sizeof($row);$inc++)
  {
    $row[$inc] = $row[$inc]."<br />";
    $word=@array_merge($word,@explode(" ", $row[$inc]));
  }
  for ($k=0;$k<@sizeof($word);$k++)
  {
    $address = @strpos($word[$k], "www");
    $url = @strpos($word[$k], "http");
    $link = @strpos($word[$k], "href");
    $ftp = @strpos($word[$k], "ftp");
    if ($link == 0)
    {
      if (($url == 0) && ($address == 0))
      {
        echo $word[$k]." ";
      }else{
        echo "<a href=\"".@str_replace('<br />','',$word[$k])."\">";
        echo $word[$k]."</a>";
      }
    }else{
      echo $word[$k]." ";
    }
  }
}
@imap_close($conn);
?>

Il codice proposto č lungo ma di per sč non estremamente complicato: in pratica lo script controlla la struttura del messaggio relativo all''Id' comunicato dal metodo grazie all'azione della funzione imap_fetchstructure(); se č presente un allegato, questo viene linkato ad un file in modo che sia possibile scaricarlo, diversamente viene proposto essenzialmente il testo della e-mail.

Da notare come il codice svolga un'azione di parsing sul contenuto del messaggio, se vengono trovate entitą linkabili come URL o indirizzi di posta elettronica, queste vengono ipertestualizzate e corredate di colegamento.

Attenzione: questo articolo č stato concesso in esclusiva per la pubblicazione a Mrwebmaster.it; ne č vietata la riproduzione,
anche parziale, senza l'esplicito consenso dell'autore e della redazione di Mrwebmaster.it.

Cerca nel sito
Per sito
Sviluppatore di applicazioni Web con competenze evolute nella progettazione delle basi di dati, autore per alcune delle pił importanti testate on line dedicate alla manualistica tecnica (HTML.it, MrWebmaster.it, Edit) e consulente per l'e-learning.
Tutte le categorie
Tutorial Random
Creare funzioni personalizzate
Le funzioni sono dei costrutti sintattici utili per produrre specifici comportamenti. Esistono principalmente due tipologie di funzioni: quelle native messe... Leggi l'articolo
Corsi online per sviluppatori
Corsi per Webmaster, Web Designer, Programmatori, Grafici e Sistemisti