Avatar billede jokeren25 Nybegynder
10. marts 2007 - 22:28 Der er 1 løsning

MMS til web

Hej eksperter,

nu har jeg rodet med et script til at uploade billeder fra en mobiltelefon via en mail konto. Scriptet finder efterfølgende  indholdet via imap_fetchbody funktionen og henter indholdet af mailen og smider vedhæftet billede i en mappe og data i en databasse.

Mit problem er når jeg sender en mms besked med et vedhæftet billede til mailen konto'en tror scriptet at det vedhæftede billede er noget text?

Hvis jeg sender præcis samme besked til en anden mail konto og forwarder den til den mail hvor scriptet henter indholdet fra kan den godt finde ud af at finde billede fra mailen?

Er der nogen der kan lure hvad problemet er eller om det skyldes måden mobiltelefonen sender data på eller er den en fejl i scriptet.

På forhånd tak.

Jeg har noget kode der ser således ud:

$pop3_address = "mms@xxx.dk";
$pop3_server = "pop.xxxx.dk";
$password = "xxxxx";
$images_dir = "./billede_upload/";
$date_format = "d-m-Y";

$db_host = "localhost";
$db_user = "xxxx_dk";
$db_password = "xxxx";
$db_name = "xxxx_dk";
$db_table = "mms";


// connecting to db
@mysql_connect($db_host, $db_user, $db_password) or header("location: $url?error=1");
@mysql_select_db($db_name) or header("location: $url?error=1");

// check if table exist
$check = mysql_query("SELECT * FROM `$db_table` LIMIT 0,1");
if (!$check) {
    $query = "CREATE TABLE `$db_table` (id int(11) NOT NULL auto_increment,type text NOT NULL,subject text NOT NULL,toaddress text NOT NULL,fromaddress text NOT NULL,date(now) text NOT NULL,UNIQUE KEY id (id)) TYPE=MyISAM; ";
   
    $result = mysql_query($query) or header("location: $url?error=1");
}

// check if directory is writable
if (!is_writable($images_dir)) {
    @mkdir("$images_dir") or header("location: $url?error=2");
    @chmod($images_dir, 0777) or header("location: $url?error=3");
}

// check if imap works
if (!function_exists('imap_open')) {
    header("location: $url?error=7");
}

// open mailbox and get all emails from server
if (! $mail = @imap_open("{".$pop3_server.":143}INBOX", "$pop3_address", "$password")) {
    header("location: $url?error=4");
}
$headerstrings = imap_headers($mail);
foreach($headerstrings as $headerstring) {
    preg_match("/[0-9]/", $headerstring, $number);
    // parse message
    $header = imap_fetchheader($mail, $number[0]);
    preg_match("/Date: (.*)?[\+|-]/", $header, $date);
    $date = htmlentities($date[1]);
    $imap = imap_fetchstructure($mail, $number[0]);
   
    if (! empty($imap->parts)) {
        for ($i = 1, $j = count($imap->parts); $i < $j; $i++) {
            $msg = imap_fetchbody($mail, $number[0], $i + 1);
            $part = $imap->parts[$i];
           
                 
            $headers = imap_header($mail, $number[0]);
            $from = $headers->from;
                  $addr = "".$from[0]->mailbox."@".$from[0]->host."";
            $subj = $headers->subject;
                        $to  = $headers->toaddress;
            $date = date($date_format, strtotime(substr($headers->Date, 0, 22)));
            $subj = preg_replace('/^.*Q\?(.*?)\?=$/', '\\1', $subj);
            $subj = str_replace("_", " ", $subj);
            $subj = str_replace("=2E", ".", $subj);
            $subj = addslashes($subj);
           
            if ($part->type == "3") {
                $ext = "3gp";
            }
            else if ($part->type == "5") {
                $ext = "jpg";
            }           
           
            else if ($part->type == "0") {
                $ext = "txt";
            }
           
            else if ($part->type == "1") {
                $ext = "multipart";
            }
           
            else if ($part->type == "2") {
                $ext = "message";
            }
           
            else if ($part->type == "4") {
                $ext = "audio";
            }
           
            else if ($part->type == "6") {
                $ext = "video";
            }
           
            else if ($part->type == "7") {
                $ext = "other";
            }
           
            else if ($part->type == "8") {
                $ext = "8";
            }
           
            else if ($part->type == "9") {
                $ext = "9";
            }
                       
           
            $query = "INSERT INTO `$db_table` VALUES ('NULL','$ext','$subj','$to','$addr',now())";
           
           
            $result = mysql_query($query) or header("location $url?error=5");
            $count = mysql_insert_id();
           
            if (! $handle = fopen("$images_dir/".$count.".$ext", "w")) {
                header("location: $url?error=6");
            }
            fwrite($handle, imap_base64($msg));
            fclose($handle);
        }
    }
}
imap_delete($mail, $number[0]);
imap_expunge($mail);
imap_close($mail);
Avatar billede jokeren25 Nybegynder
13. marts 2007 - 09:26 #1
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester