weiße Seite bei eingehenden Mails mit Anhang

Hallo,

Ich habe eine Funktion die Anhänge von eingehenden E-Mails in einem Ordner speichern sollen.

Das versenden von Mails und Empfangen (ohne Anhang) klappt 1a.

Jedoch ist die komplette Seite weiß sobald jemand einen Anhang bekommt!

<?php

function extract_attachments($mbox,$mid,$dbid,$mailbox) {

global $conf;

$structure = imap_fetchstructure($mbox, $mid); $parts = $structure->parts; $i = 0;

if (!$parts) {

$attachment = array(); $content = imap_body($mbox, $mid); } else {

$endwhile = false; $stack = array(); $content = "";

$attachment = array();

while (!$endwhile) {

if (!$parts[$i]) {

if (count($stack) > 0) {

$parts = $stack[count($stack)-1]["p"]; $i = $stack[count($stack)-1]["i"] + 1;

array_pop($stack);

} else { $endwhile = true; }}

if (!$endwhile) {

$partstring = ""; foreach ($stack as $s) { $partstring .= ($s["i"]+1) . "."; } $partstring .= ($i+1);

if (strtoupper($parts[$i]->disposition) == "ATTACHMENT") {

$attachment[] = array("filename" => $parts[$i]->parameters[0]->value,"filedata" => imap_fetchbody($mbox, $mid, $partstring));

$encoding = $parts[$i]->encoding;

$fp = fopen("./anhang/".$dbid."_".$i.".anhang","w+");

if ($encoding == 3) { fwrite($fp, base64_decode(imap_fetchbody($mbox, $mid, $partstring))); } else { fwrite($fp, imap_fetchbody($mbox, $mid, $partstring)); }

$dateiname = $parts[$i]->parameters[0]->value;

$dateigroesse = filesize("./anhang/".$dbid."_".$i.".anhang");

mysql_query("INSERT INTO ".DB_mf_mail_anhang." (mbox,mid,dateiname,tempname,groesse) VALUES ('".$mailbox."', '".$dbid."', '".addslashes($dateiname)."', '".$i."', '".$dateigroesse."')");

}}

if ($parts[$i]->parts) { $stack[] = array("p" => $parts, "i" => $i); $parts = $parts[$i]->parts;

$i = 0; } else { $i++; }}}} ?>

...zum Beitrag

Hallo

hat sich erledigt

habe es folgendermaßen gelöst:

parameters[0]

wurde zu

dparameters[0]

und nun läufts, weis der geier wieso, aber es funtzt nun.

...zur Antwort
weiße Seite bei eingehenden Mails mit Anhang

Hallo,

Ich habe eine Funktion die Anhänge von eingehenden E-Mails in einem Ordner speichern sollen.

Das versenden von Mails und Empfangen (ohne Anhang) klappt 1a.

Jedoch ist die komplette Seite weiß sobald jemand einen Anhang bekommt!

<?php

function extract_attachments($mbox,$mid,$dbid,$mailbox) {

global $conf;

$structure = imap_fetchstructure($mbox, $mid); $parts = $structure->parts; $i = 0;

if (!$parts) {

$attachment = array(); $content = imap_body($mbox, $mid); } else {

$endwhile = false; $stack = array(); $content = "";

$attachment = array();

while (!$endwhile) {

if (!$parts[$i]) {

if (count($stack) > 0) {

$parts = $stack[count($stack)-1]["p"]; $i = $stack[count($stack)-1]["i"] + 1;

array_pop($stack);

} else { $endwhile = true; }}

if (!$endwhile) {

$partstring = ""; foreach ($stack as $s) { $partstring .= ($s["i"]+1) . "."; } $partstring .= ($i+1);

if (strtoupper($parts[$i]->disposition) == "ATTACHMENT") {

$attachment[] = array("filename" => $parts[$i]->parameters[0]->value,"filedata" => imap_fetchbody($mbox, $mid, $partstring));

$encoding = $parts[$i]->encoding;

$fp = fopen("./anhang/".$dbid."_".$i.".anhang","w+");

if ($encoding == 3) { fwrite($fp, base64_decode(imap_fetchbody($mbox, $mid, $partstring))); } else { fwrite($fp, imap_fetchbody($mbox, $mid, $partstring)); }

$dateiname = $parts[$i]->parameters[0]->value;

$dateigroesse = filesize("./anhang/".$dbid."_".$i.".anhang");

mysql_query("INSERT INTO ".DB_mf_mail_anhang." (mbox,mid,dateiname,tempname,groesse) VALUES ('".$mailbox."', '".$dbid."', '".addslashes($dateiname)."', '".$i."', '".$dateigroesse."')");

}}

if ($parts[$i]->parts) { $stack[] = array("p" => $parts, "i" => $i); $parts = $parts[$i]->parts;

$i = 0; } else { $i++; }}}} ?>

...zum Beitrag

Fehlerzeile ist: Fatal error: Cannot use object of type stdClass as array in check.cron.php on line 174

if (strtoupper($parts[$i]->disposition) == "ATTACHMENT") { $attachment[] = array("filename" => $parts[$i]->parameters[0]->value); }
...zur Antwort

 

behebt das Problem trotzdem irgendwie nicht Fehlermeldungen bleiben Gleich Sehe auch gerade das meine Frage nicht komplett ist Oo

Kommentiere ich $pcid aus, ist der Fehler weg, aber ich muss mich erneut einloggen da er meinem account nchts zuweisen kann
 

Warning: mysql_result() expects parameter 2 to be long, string given in login.php on line 158 Warning: Cannot modify header information - headers already sent by (output started at login.php:158) in login.php on line 175
...zur Antwort

Danke für deine Antwort. Genau soetwas habe ich mir fast gedacht, war mir aber nicht sicher. Aber dafür ist halt diese Community ja gut.

Eine möglichkeit wäre dann also, die grafiken komplett zu ändern oder auf irgendeine art und weise zu verfälschen. Das sollte wohl kein Problem darstellen. Oder ist das da auch so eine Sache.

...zur Antwort