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);
