halimeh Geschrieben 18. März 2005 Teilen Geschrieben 18. März 2005 Moinsen ! Ich möchte via PHP einemail mit Attachement (z.B. Bild) versenden. Ein User gibt in einem Formular Zieladresse, Betreff, Text, Dateianhang etc ein und kann diese mail dann verschicken. Hier erstmal mein HTML-Formular: <html> <head> <title>main</title> </head> <body bgcolor=#000000 text=#00FF00> <form action="attachement001.php" enctype=multipart/form-data method="post"> <table> <tr> <td>Zieladresse:</td> <td><input type="text" name="ziel"></td> </tr> <tr> <td>Absender:</td> <td><input type="text" name="sender"></td> </tr> <tr> <td>Betreff:</td> <td><input type="text" name="headline"></td> </tr> <tr> <td>Text:</td> <td><textarea name="palaver" rows="13" cols="51" wrap="physical"> </textarea></td> </tr> <tr> <td><input type=file name=datei></td> </tr> </table> <br><br> <input type="reset" value="Eingaben verwerfen"> <br><br> <input type="submit" value="Daten senden"> </form> <br> </body> </html> Das ist ja soweit alles klar. Hier nun mein eigentliches PHP-Skript (attachement001.php): <?php $grenze="grenzlinie"; $name_des_bildes=$HTTP_POST_FILES['datei']['name']; $headers ="MIME-Version: 1.0\r\n"; $headers.="From: $sender\n"; $headers.="Content-Type: multipart/mixed;\n\tboundary=$grenze\n"; $botschaft<I></I>="\n--$grenze\n"; $botschaft.="Content-transfer-encoding: 7BIT\r\n"; $botschaft.="Content-type: text/plain\n\n"; $botschaft.= "$palaver\n"; $botschaft.="\n\n"; $botschaft.="\n--$grenze\n"; $botschaft.="Content-Type: application/octetstream;\n\tname=$name_des_bildes\n"; $botschaft.="Content-Transfer-Encoding: base64\n"; $botschaft.="Content-Disposition: attachment;\n\tfilename=$name_des_bildes\n\n"; $handle=fopen("$datei","rb"); $inhalt_der_datei=fread($handle,filesize("$datei")); fclose($handle); $inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei)); $botschaft.=$inhalt_der_datei; $botschaft.="\n\n"; $botschaft.="--$grenze"; mail("$ziel","$headline",$botschaft,$headers); print "email wurde versandt"; ?> Aber irgendwie haut das nicht hin. Ich kann im Formular alle Sachen eingeben, wenn ich dann aber auf 'Daten sende' klicke, kommt ein Fortschrittsbalken, der ewig braucht ohne daß die mail letztendlich versendet wird. Kann mir jemand sagen wo der Fehler steckt ? Unklar ist mir vor allem folgendes: Was hat es mit der zweiten Zeile: $name_des_bildes=$HTTP_POST_FILES['datei']['name']; auf sich ? Mir wurde gesagt, daß ich diese noch einfügen müßte.Was das bewirkt, weiß ich aber absolut net. Dann noch das: Im Formular wird ja ein Dateianhang ausgewählt.Dieser trägt den Namen 'datei', also im PHP-Skript den Variablennamen $datei. Ist das nun nur der Name der Datei oder der Pfad ? Gleiches bei '$name_des_bildes'. Und wenn es sich um einen Pfad handelt:Wie gibt man den Pfad denn an ? C:\test.jpg oder C:/test.jpg ? Ist ne Menge Holz; ich bin für jegliche Hilfe dankbar. Thx and greetz. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 18. März 2005 Teilen Geschrieben 18. März 2005 - was steht bei upload_max_filesize in deiner phpinfo? - hast du upload_tmp_dir definiert + hast du schreibrechte in diesem verzeichnis? ['name'] ist nämlich der dateiname, der im temporären verz. angelegt wird. - was steht bei smtp, smtp_port, und sendmail_path dort? - hast dus schon mal geschafft, ein mail nur mit mail(...) ohne die restlichen headerzeilen zu versenden? Was hat es mit der zweiten Zeile: $name_des_bildes=$HTTP_POST_FILES['datei']['name']; auf sich ? das mehrdimensionale (?) array ['datei'] enthält neben 'name' noch 'type', 'size', 'tmp_name' (siehe auch im php-manual), also alle infos zum inhalt des uploads aus deinem form: <form action="attachement001.php" enctype=multipart/form-data method="post"> C:\test.jpg oder C:/test.jpg ? ist m.w. bei php auf windows egal, kann ich aber nicht bestätigen. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
halimeh Geschrieben 18. März 2005 Autor Teilen Geschrieben 18. März 2005 Moinsen ! Hier mal ein paar weitere Infos: Unter upload_max_filesize steht 2M (mein Beispielbild hatte eine Größe von 1.591kb) Die upload_tem_dir habe ich nicht selbst definiert (ich wüßte aber auch nicht wie); es ist da 'no value' vermerkt. SMTP : localhost SMTP_port : 25 sendmail_path : /usr/sbin/sendmail -t-i Normale mails ohne attachements konnte ich ganz locker mit mail($ziel, $headline, $palaver, "FROM: $sender") versenden. Thx and greetz. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
halimeh Geschrieben 21. März 2005 Autor Teilen Geschrieben 21. März 2005 Moinsen ! Ich habe mein PHP-Skript mimnimal abgeändert. <?php $grenze="grenzlinie"; $name_des_bildes=$HTTP_POST_FILES['datei']['name']['type']['size']; $headers="MIME-Version: 1.0\r\n"; $headers.="From: $sender\n"; $headers.="Content-Type: multipart/mixed;\n\tboundary=$grenze\n"; $botschaft="\n--$grenze\n"; $botschaft.="Content-transfer-encoding: 7BIT\r\n"; $botschaft.="Content-type: text/plain\n\n"; $botschaft.="$palaver\n"; $botschaft.="\n\n"; $botschaft.="\n--$grenze\n"; $botschaft.="Content-Type: application/octetstream;\n\tname=$name_des_bildes\n"; $botschaft.="Content-Transfer-Encoding: base64\n"; $botschaft.="Content-Disposition: attachment;\n\tfilename=$name_des_bildes\n\n"; $zeiger_auf_datei=fopen("$datei","rb"); $inhalt_der_datei=fread($zeiger_auf_datei,filesize("$datei")); fclose($zeiger_auf_datei); $inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei)); $botschaft.=$inhalt_der_datei; $botschaft.="\n\n"; $botschaft.="--$grenze"; mail($ziel,$headline,$botschaft,$headers); echo("email wurde versandt"); ?> Die mail wird nun versandt.Betreff sowie der geschriebene Text sind genau wie Absender und Empfänger korrekt dargestellt. Ich habe ein 1.591kb großes jpg-Bild mitgesandt.Der Empfänger kann auch sehen, daß ein Anhang mitversandt wurde.Dieser hat aber fälschlicherweise eine Größe von Null kb und läßt sich auch nicht öffnen. Nach dem Ausfüllen des Formulars und des Abschickens der Daten, dauert der Versand ziemlich lange.Letztendlich kommt dann folgende Meldung: "Warning: fopen(): open_basedir restriction in effect. File(/tmp/phpGbPOFA) is not within the allowed path(s): (/usr/local/apache/htdocs) in /usr/local/apache/htdocs/k9045/testus01/attachement002.php on line 16 Warning: fopen(/tmp/phpGbPOFA): failed to open stream: Operation not permitted in /usr/local/apache/htdocs/k9045/testus01/attachement002.php on line 16 Warning: filesize(): open_basedir restriction in effect. File(/tmp/phpGbPOFA) is not within the allowed path(s): (/usr/local/apache/htdocs) in /usr/local/apache/htdocs/k9045/testus01/attachement002.php on line 17 Warning: fread(): supplied argument is not a valid stream resource in /usr/local/apache/htdocs/k9045/testus01/attachement002.php on line 17 Warning: fclose(): supplied argument is not a valid stream resource in /usr/local/apache/htdocs/k9045/testus01/attachement002.php on line 18 email wurde versandt" Kann mir jemand sagen, was da am Skript falsch ist? Thx and greetz. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 21. März 2005 Teilen Geschrieben 21. März 2005 versuch mal, in einer dir zugänglichen konfigurationsdatei, den temporären speicherpfad der upgeloadeten datei einzutragen. php_admin_value open_basedir /tmp/blabla die sogenannte open_basedir-einschränkung hindert dich zwar nicht, dateien raufzuladen, aber sie dann aus dem temporären verzeichnis ausserhalb deines heimatverzeichnisses (oder webroots) zu lesen. edit: übrigens kannst du mit php_admin_value fast beliebige serverseitige name/wert-paare definieren, die dann auch in deiner phpinfo aufscheinen sollten. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
halimeh Geschrieben 28. März 2005 Autor Teilen Geschrieben 28. März 2005 Moinsen ! Irgendwie scheint es meinen WebSpace-Anbieter zerrissen zu haben.Nicht nur daß meine WebSite nicht erreichbar ist, selbst die HomePage meines Anbieters 100mb4free.de ist nicht mehr anwählbar. Mails an den support wurden auch noch nicht beantwortet.Nun gut, warte ich mal was da noch so kommt. Greetz. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.