PHP - Email Attachment aus Postfach auf Windows Share

Dieses Thema im Forum "Webentwicklung" wurde erstellt von thug-life, 15. Januar 2014 .

  1. 15. Januar 2014
    Hallo Zusammen,

    ich habe folgendes Anliegen.
    - PHP Script holt sich aus einem Postfach alle Anhänge von Mails und speichert diese ab

    nun habe ich folgendes Script:

    get.php
    Code:
    <?
    require_once("attachmentread.class.php");
    $host="{mailserverIP:110/pop3}";
    $login="username"; // 
    $password="passwort";
    //$savedirpath="\\server1.home.local@user:passwort\hier\kommt\ein\verzeichniss" ;
    $savedirpath="/var/www/getemail/";
    $jk=new readattachment(); 
    $jk->getdata($host,$login,$password,$savedirpath);
    ?>
    
    attachmentread.class.php

    Code:
    <?
    class readattachment
    {
     
     function getdecodevalue($message,$coding)
     {
     if ($coding == 0) 
     { 
     $message = imap_8bit($message); 
     } 
     elseif ($coding == 1) 
     { 
     $message = imap_8bit($message); 
     } 
     elseif ($coding == 2) 
     { 
     $message = imap_binary($message); 
     } 
     elseif ($coding == 3) 
     { 
     $message=imap_base64($message); 
     } 
     elseif ($coding == 4) 
     { 
     $message = imap_qprint($message); 
     } 
     elseif ($coding == 5) 
     { 
     $message = imap_base64($message); 
     } 
     return $message;
     }
    
     function getdata($host,$login,$password,$savedirpath)
     {
     $mbox = imap_open ($host, $login, $password) or die("can't connect: " . imap_last_error());
     $message = array();
     $message["attachment"]["type"][0] = "text";
     $message["attachment"]["type"][1] = "multipart";
     $message["attachment"]["type"][2] = "message";
     $message["attachment"]["type"][3] = "application";
     $message["attachment"]["type"][4] = "audio";
     $message["attachment"]["type"][5] = "image";
     $message["attachment"]["type"][6] = "video";
     $message["attachment"]["type"][7] = "other";
     
     for ($jk = 1; $jk <= imap_num_msg($mbox); $jk++)
     {
     $structure = imap_fetchstructure($mbox, $jk , FT_UID); 
     $parts = $structure->parts;
     $fpos=2;
     for($i = 1; $i < count($parts); $i++)
     {
     $message["pid"][$i] = ($i);
     $part = $parts[$i];
    
     if($part->disposition == "ATTACHMENT") 
     {
     
     $message["type"][$i] = $message["attachment"]["type"][$part->type] . "/" . strtolower($part->subtype);
     $message["subtype"][$i] = strtolower($part->subtype);
     $ext=$part->subtype;
     $params = $part->dparameters;
     $filename=$part->dparameters[0]->value;
     
     $mege="";
     $data="";
     $mege = imap_fetchbody($mbox,$jk,$fpos); 
     $filename="$filename";
     $fp=fopen($filename,w);
     $data=$this->getdecodevalue($mege,$part->type); 
     fputs($fp,$data);
     fclose($fp);
     $fpos+=1;
     
     
     
     }
     
     }
    //imap_delete tags a message for deletion
     //imap_delete($mbox,$jk);
     
     }
    // imap_expunge deletes all tagged messages
     //imap_expunge($mbox);
     imap_close($mbox);
     }
    }
    
    
    ?>
    
    
    Folgendes funktioniert:
    - er holt die Anhänge ab
    - Speichert diese ab

    Problem:
    - er speichert die Anhänge egal was ich in die Variable schreibe immer dort wo die .php Datein sind

    Ich würde gerne die Datein auf einen anderen Server (Freigabe auf einem Windows Server) abspeichern.

    Kann mir hier jemand helfen ?

    gruß
    thug-life
     
  2. 15. Januar 2014
    AW: PHP - Email Attachment aus Postfach auf Windows Share

    hi,

    das die dateien schonmal auf einem server liegen ist doch schon mal was.
    jetzt geht's darum die dateien auf einen anderen server zu übertragen.
    eine lösung wäre z.b. per FTP.
    für PHP gibt es einige FTP-klassen die man verwenden könnte.
     
  3. 15. Januar 2014
    AW: PHP - Email Attachment aus Postfach auf Windows Share

    Klar, die Funktion "getdata" verwendet die "$savedirpath" Variable ja gar nicht.
    Änder mal die Zeile
    Code:
    $filename="$filename";
    in
    Code:
    $filename="$savedirpath"."$filename";
    Ist ungetestet, mein PHP ist nicht sonderlich aber so sollte es klappen (vorausgesetzt dein Pfad endet mit einem / )
    Die SMB Freigabe kannst du ja einfach lokal mounten und dann als $savedirpath verwenden.
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.