Avatar billede gertnissen Nybegynder
10. februar 2006 - 15:51 Der er 1 løsning

IMAP BLOG - filnavn på vedlagte billeder og 'ren' body tekst.

Vedlagte php stump virker fint, men jeg mangler lidt hjælp til nogle småting.

1) Hvordan finder jeg det rigtige filnavn på det vedlagte billede ?
2) Hvordan får jeg udtrukket body-tekst uden diverse koder (f.eks. content-type, code-page) og samtidig tager hensyn til dette ved output (må gerne indeholde html).

Spørg endelig hvis I har behov for mere info....

Scriptet lister ulæste postbeskeder, og viser en enkelt ved klik.
<?php
$num=isset($_POST['num']) ? $_POST['num'] : $_GET['num'];
$box = imap_open( "{pop.domain.dk/pop3:110}INBOX", "email@domain.dk", "password" );

if (!$box === false)
{
  $xnum = imap_num_msg( $box );
  for ( $i = 1; $i < $xnum; $i++ )
    {
      $header = imap_headerinfo( $box, $i, 80, 80 );
      echo "$i.) Subject: <a href=\"$PHP_SELF?num=$i\">".$header->fetchsubject."</a><br/>\n";
      echo " &nbsp;  &nbsp; From: " .  $header->fromaddress  . "<br><br>";
    }
    /* Skriv også den valgte besked ud */
    if ($num)
    {
      $body = imap_body( $box, $num );
      echo "<pre>" .  imap_fetchbody($box,$num,1)  . "</pre>";
      $message = imap_fetchbody($box,$num,2);
      /* skriv vedlagte fil til disk */
      $attach=imap_base64($message);
      $fp= fopen ("filename.jpg", "wb");
      fwrite ($fp, $attach);
      fclose ($fp);
      echo "<img src=\"filename.jpg\" border=0>";
    }
    imap_close( $box );
}
else
{
  if (function_exists("imap_open")) echo "Hurra, der er IMAP funktioner!";
  else echo "Øv...Ingen IMAP funktion";
}
?>
Avatar billede gertnissen Nybegynder
10. februar 2006 - 21:56 #1
Så tror jeg at løsningen er lidt tættere på. Mit simple script udskriver nu kun rigtig tekst (fetchbody 1.1) uden headers og lign og finder et korrekt filnavn.
Og ja det kan blive meget bedre endnu.... skriv endelig hvis du har forslag.

<?php
// http://www.linuxscope.net/articles/mailAttachmentsPHP.html

$num=isset($_POST['num']) ? $_POST['num'] : $_GET['num'];

$ServerName = "{pop.domain.dk/pop3:110}INBOX"; // For a POP3 connection    (PORT 110)
$UserName = "mail@domain.dk";
$PassWord = "password";

$box = imap_open($ServerName, $UserName,$PassWord) or die("Could not open Mailbox - try again later!");

if (!$box === false)
{
  if ($xnum = imap_num_msg( $box ))
    {
      echo 'Der ligger '.$xnum.' stk.<br><br>';

      for ( $i = 1; $i <= $xnum; $i++ )
      {
        $header = imap_headerinfo( $box, $i, 80, 80 );
        echo "$i.) Subject: <a href=\"$PHP_SELF?num=$i\">".$header->fetchsubject."</a><br/>\n";
        echo " &nbsp;  &nbsp; From: ".$header->fromaddress."<br><br>";
      }
    }
    else echo 'No messages!';

    /* Skriv den valgte besked ud */
    if ($num)
    {
      // 1.1 = text/plain, http://dk2.php.net/manual/en/function.imap-fetchbody.php#46041
      echo '<hr>'.imap_fetchbody($box,$num,1.1).'<hr>';

      // get filename
      // http://www.phpbuilder.com/annotate/message.php3?id=1006812
      $struct = imap_fetchstructure($box, $num);
      if($attachment = count($struct->parts))
      {
        for($a = 1; $a < $attachment;$a++)
        {
          $attachments = $struct->parts[$a]->dparameters[0]->value;
          echo $attachments;
        }
        // save file
        $message = imap_fetchbody($box,$num,2);
        $attach=imap_base64($message);
        $fp= fopen ($attachments, "wb");
        fwrite ($fp, $attach);
        fclose ($fp);
        echo "<br><img src=\"$attachments\" border=0>";
      }
    }
    imap_close( $box );
}
else
{
  if (function_exists("imap_open")) echo "Hurra, der er IMAP funktioner!";
  else echo "Øv...Ingen IMAP funktion";
}
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester