#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren