tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1954
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Funky_MF
    Funky_MF Funky_MF ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Ort
    Unterfranken (Bayern)
    Beiträge
    127
    Ich bin auf der Such nach einer Möglichkeit, wie ich Anhänge von Mails, welche ich per imap-Funktion von einer POP3-Mailbox abhole, automatisch auf dem Webserver speichern kann, der Pfad und den Dateinamen möchte ich in eine DB speichern.

    Nach Durcharbeiten etlicher Tutorial-Threads hab ich Dennis' Wronkas Skript gefunden:
    http://www.tutorials.de/forum/php/24...t-erkannt.html

    PHP-Code:
    <?php 
    ob_start
    (); 
    session_start(); 
    //require("config.php"); 
    if ((isset($_GET['msgid'])) && (isset($_GET['part']))) 
        { 
            
    $mbox=imap_open("{localhost/pop3:110}INBOX""Name""Passwort"); 
            
    $struct=imap_fetchstructure($mbox,$_GET['msgid']); 
            
    $body=imap_fetchbody($mbox,$_GET['msgid'],$_GET['part']+1); 
            
    imap_close($mbox); 
            if (
    $struct->parts[$_GET['part']]->type==0
                { 
                    
    $content_type="text"
                } 
            elseif (
    $struct->parts[$_GET['part']]->type==4
                { 
                    
    $content_type="audio"
                } 
            elseif (
    $struct->parts[$_GET['part']]->type==5
                { 
                    
    $content_type="image"
                } 
            
    //elseif ($struct->parts[$_GET['part']]->type==3) 
            
    else 
                { 
                    
    $content_type="application"
                } 
            
    $content_type.="/".strtolower($struct->parts[$_GET['part']]->subtype); 
            
    $content_disposition=strtolower($struct->parts[$_GET['part']]->disposition); 
            
            
    header("Content-Type: ".$content_type); 

            
    header("Content-Disposition: ".$content_disposition."; filename=\"".$struct->parts[$_GET['part']]->dparameters[0]->value."\""); 
            if (
    $struct->parts[$_GET['part']]->encoding==3
                { 
                    
    $body=base64_decode($body); 
                } 
            if (
    $struct->parts[$_GET['part']]->encoding==4
                { 
                    
    $body=quoted_printable_decode($body); 
                } 
            echo 
    $body
        } 
    ob_end_flush(); 
    ?>
    Ich denke damit komme ich zurecht, nur weiß ich nicht wie ich nun anstelle des Downloads die Anhänge direkt abspeichere. Ich bin aber der Meinung, daß ich an der Stelle, wo die Header gesendet werden, den Code entsprechend abändern muß...?

    Kann mir jemand weiterhelfen ?
     
    Es ist keine Schande, nicht alles zu wissen;
    wohl aber, es nicht zugeben zu wollen.


    Wie man Fragen richtig stellt...

    KEINE ZIELGRUPPE

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Die Teilinhalte selbst befinden sich jeweils in der $body-Variable. Es sollte also kein Problem sein den Wert dieser Variable in einer Datei zu speichern statt ihn direkt auszugeben. Zusätzlich solltest du jedoch noch den MIME-Typ und die Kodierung speichern, damit die Daten später richtig verarbeitet werden können.
     
    Markus Wulftange

  3. #3
    Avatar von Funky_MF
    Funky_MF Funky_MF ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Ort
    Unterfranken (Bayern)
    Beiträge
    127
    Danke, soweit habe ich mir das schon gedacht, aber kannst du mir da mal auf die Sprünge helfen, wie ich da genau vorgehe, bzw. welche Funktion ich da verwenden muß ?
     
    Es ist keine Schande, nicht alles zu wissen;
    wohl aber, es nicht zugeben zu wollen.


    Wie man Fragen richtig stellt...

    KEINE ZIELGRUPPE

  4. #4
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Den Dateinamen zum Speichern kannst Du in dieser Zeile sehen:
    PHP-Code:
    header("Content-Disposition: ".$content_disposition."; filename=\"".$struct->parts[$_GET['part']]->dparameters[0]->value."\""); 
    Er befindet sich in $struct->parts[$_GET['part']]->dparameters[0]->value
    Mit fopen() erstellst Du also diese Datei, decodierst gegebenenfalls den Anhand und schreibst ihn in die Datei.
    Also ca. so:
    PHP-Code:
    if ($struct->parts[$_GET['part']]->encoding==3)
    {
     
    $body=base64_decode($body);
    }
    if (
    $struct->parts[$_GET['part']]->encoding==4)
    {
     
    $body=quoted_printable_decode($body);
    }
    $attachment=fopen($struct->parts[$_GET['part']]->dparameters[0]->value,'w');
    fwrite($attachment,$body);
    fclose($attachment); 
    Dies setzt Du dann anstelle dieses Codes ein:
    PHP-Code:
            header("Content-Type: ".$content_type); 

            
    header("Content-Disposition: ".$content_disposition."; filename=\"".$struct->parts[$_GET['part']]->dparameters[0]->value."\""); 
             if (
    $struct->parts[$_GET['part']]->encoding==3
                { 
                    
    $body=base64_decode($body); 
                } 
            if (
    $struct->parts[$_GET['part']]->encoding==4
                { 
                    
    $body=quoted_printable_decode($body); 
                } 
            echo 
    $body
        } 
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  5. #5
    Avatar von Funky_MF
    Funky_MF Funky_MF ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Ort
    Unterfranken (Bayern)
    Beiträge
    127
    Alles klar, fopen() und fwrite() war das, was ich gesucht hab, stand mal wieder völllig auf dem Schlauch....

    Vieln Dank !
     
    Es ist keine Schande, nicht alles zu wissen;
    wohl aber, es nicht zugeben zu wollen.


    Wie man Fragen richtig stellt...

    KEINE ZIELGRUPPE

Ähnliche Themen

  1. Mail und seine Anhänge
    Von bRainLaG im Forum Mac OS
    Antworten: 2
    Letzter Beitrag: 23.01.12, 21:37
  2. E-Mail Anhänge(Viren) Speichern
    Von themonk im Forum Coders Talk
    Antworten: 4
    Letzter Beitrag: 30.03.05, 20:17
  3. Mail()-Anhänge
    Von Vaio82 im Forum PHP
    Antworten: 3
    Letzter Beitrag: 15.02.05, 08:16
  4. Firebox 2 blockt Mail-Anhänge nicht
    Von hilfe firebox im Forum Netzwerke
    Antworten: 0
    Letzter Beitrag: 02.01.04, 21:38