nthing Skrevet 3. august 2005 Del Skrevet 3. august 2005 (endret) Hei jeg så det scriptet på "Script som andre kan ha nytte får"(elr hva det var) Har laget et lite script for å legge inn postinger med bilde i en blogg fra mobilen vha mail, og siden det var et par som ville se det legger jeg det ut her. Har editert det litt fra min kjørende versjon (fjernet litt spesifikke metoder for min blogg). Si ifra hvis jeg har gjort noe som gjør at ting ikke kjører... Dette scriptet tar kun høyde for det første vedlegget, men det burde være ganske greit å legge til mulighet for å hente ut flere bilder fra samme mail med funksjonen $antallDeler = count($struct->parts); og et par endringer i itereringen over vedlegg. Have fun smile.gif <? $ServerName = "{mailserver.com:143/notls}INBOX"; // For å koble til med Imap. Det kan være nødvendig med et punktum rett etter INBOX (INBOX.) $brukerNavn = "brukernavn"; //Brukernavn til mailen $passOrd = "passord"; //Passord til mailkontoen $lovligMail = "lovligmail"; //Den mailadressen man må sende fra for at ting skal legges ut $katalog = "./bilder/blog/"; //Sti til katalogen der bilder skal lagres //Kobler til mailboksen $mbox = imap_open($ServerName,$brukerNavn,$passOrd) or die("Klarte ikke åpne mail, prøv igjen senere"); if ($hdr = imap_check($mbox)) { $msgCount = $hdr->Nmsgs; } $overview=imap_fetch_overview($mbox,"1:$msgCount",0); $size=sizeof($overview); for($i=$size-1;$i>=0;$i--){ $val=$overview[$i]; $msg=$val->msgno; $from=$val->from; $date=$val->date; $subj=$val->subject; $seen=$val->seen; $from = ereg_replace("\"","",$from); $from = ereg_replace(" ","",$from); $lengde = strlen($lovligMail); $from = substr($from,0,$lengde); //Sjekker om mailen er fra rett adresse... if($from == $lovligMail) { $kropp = get_part($mbox, $msg, "TEXT/PLAIN"); $subj = imap_utf8($subj); $kropp = imap_utf8($kropp); //Fikser norske bokstaver i subject $subj = ereg_replace("Æ", "Æ", $subj); $subj = ereg_replace("Ø", "Ø", $subj); $subj = ereg_replace("Ã…", "Å", $subj); $subj = ereg_replace("æ", "æ", $subj); $subj = ereg_replace("ø", "ø", $subj); $subj = ereg_replace("Ã¥", "å", $subj); //Fikser norske bokstaver i kropp $kropp = ereg_replace("Æ", "Æ", $kropp); $kropp = ereg_replace("Ø", "Ø", $kropp); $kropp = ereg_replace("Ã…", "Å", $kropp); $kropp = ereg_replace("æ", "æ", $kropp); $kropp = ereg_replace("ø", "ø", $kropp); $kropp = ereg_replace("Ã¥", "å", $kropp); $struct = imap_fetchstructure($mbox,$msg); $contentParts = count($struct->parts); $vedlegg = imap_bodystruct($mbox,$msg,2); //Lager mer fornuftig format på data $datoArray = explode(" ", $date); //Formaterer dag if($datoArray[0] < 10) { $dag = "0"; $dag .= $datoArray[0]; } else { $dag = $datoArray[0]; } //Formaterer måned switch ($datoArray[1]) { case "Jan": $mnd = "01"; break; case "Feb": $mnd = "02"; break; case "Mar": $mnd = "03"; break; case "Apr": $mnd = "04"; break; case "May": $mnd = "05"; break; case "Jun": $mnd = "06"; break; case "Jul": $mnd = "07"; break; case "Aug": $mnd = "08"; break; case "Sep": $mnd = "09"; break; case "Oct": $mnd = "10"; break; case "Nov": $mnd = "11"; break; case "Dec": $mnd = "12"; break; } //Formaterer år $aar = $datoArray[2]; //Formaterer tid $otid = $datoArray[3]; $tid = substr($otid,0,2).substr($otid,3,2).substr($otid,6,2); //Setter sammen datoen $dato = $aar.$mnd.$dag."_".$tid; $filNavn = $vedlegg->parameters[0]->value; $filType = strrev(substr(strrev($filNavn),0,4)); $skrivefil = $katalog.$dato.$filType; if($filType == ".jpg" && !is_file($skrivefil)) //Dersom vedlegg er en .jpg-fil og filen ikke allerede finnes { //Finner innholdet til attachmenten $filInnhold = imap_fetchbody($mbox,$msg,2); $filInnhold = base64_decode($filInnhold); $bilde = imagecreatefromstring($filInnhold); //Lager bilde av rådata fra attachment $skrivefil = $katalog.$dato.$filType; //Lager filnavn //Lager selve bildet imagejpeg($bilde,$skrivefil); //Skriver bildet til disk chmod($skrivefil,0644); //Setter leserettigheter //Her kan man legge til hva man vil gjøre med dataene. //$subj er tittel på mailen //$kropp er body //$skrivefil inneholder sti til bildefilen som er skrevet. //$bilde inneholder rådata for bildet //Det kan være lurt å kjøre en imagedestroy($bilde) etterpå for å sikre at det blir slettet fra minnet. } } imap_delete($mbox,$msg); //Sletter mail som er behandlet } //Slutt på for-løkke som tar alle mailene imap_expunge($mbox); //Tømmer mailboksen imap_close($mbox); //Lukker mailboksen function get_mime_type(&$structure) { $primary_mime_type = array("TEXT", "MULTIPART","MESSAGE", "APPLICATION", "AUDIO","IMAGE", "VIDEO", "OTHER"); if($structure->subtype) { return $primary_mime_type[(int) $structure->type] . '/' .$structure->subtype; } return "TEXT/PLAIN"; } function get_part($stream, $msg_number, $mime_type, $structure = false, $part_number = false) { if(!$structure) { $structure = imap_fetchstructure($stream, $msg_number); } if($structure) { if($mime_type == get_mime_type($structure)) { if(!$part_number) { $part_number = "1"; } $text = imap_fetchbody($stream, $msg_number, $part_number); if($structure->encoding == 3) { return imap_base64($text); } else if($structure->encoding == 4) { return imap_qprint($text); } else { return $text; } } if($structure->type == 1) /* multipart */ { while(list($index, $sub_structure) = each($structure->parts)) { if($part_number) { $prefix = $part_number . '.'; } $data = get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix . ($index + 1)); if($data) { return $data; } } } } return false; } ?> jeg har lagd det litt anderledes men det funker ikke :/ Mitt: <? $ServerName = "{mail.fun-4*****:143/notls}INBOX."; // For å koble til med Imap. Det kan være nødvendig med et punktum rett etter INBOX (INBOX.) $brukerNavn = "[email protected]"; //Brukernavn til mailen $passOrd = "*******"; //Passord til mailkontoen $lovligMail = "[email protected]"; //Den mailadressen man må sende fra for at ting skal legges ut $katalog = "/galleri/mine/Mobil/"; //Sti til katalogen der bilder skal lagres //Kobler til mailboksen $mbox = imap_open($ServerName,$brukerNavn,$passOrd) or die("Klarte ikke åpne mail, prøv igjen senere"); if ($hdr = imap_check($mbox)) { $msgCount = $hdr->Nmsgs; } $overview=imap_fetch_overview($mbox,"1:$msgCount",0); $size=sizeof($overview); for($i=$size-1;$i>=0;$i--){ $val=$overview[$i]; $msg=$val->msgno; $from=$val->from; $date=$val->date; $subj=$val->subject; $seen=$val->seen; $from = ereg_replace("\"","",$from); $from = ereg_replace(" ","",$from); $lengde = strlen($lovligMail); $from = substr($from,0,$lengde); //Sjekker om mailen er fra rett adresse... if($from) { $kropp = get_part($mbox, $msg, "TEXT/PLAIN"); $subj = imap_utf8($subj); $kropp = imap_utf8($kropp); //Fikser norske bokstaver i subject $subj = ereg_replace("Æ", "Æ", $subj); $subj = ereg_replace("Ø", "Ø", $subj); $subj = ereg_replace("Ã…", "Å", $subj); $subj = ereg_replace("æ", "æ", $subj); $subj = ereg_replace("ø", "ø", $subj); $subj = ereg_replace("Ã¥", "å", $subj); //Fikser norske bokstaver i kropp $kropp = ereg_replace("Æ", "Æ", $kropp); $kropp = ereg_replace("Ø", "Ø", $kropp); $kropp = ereg_replace("Ã…", "Å", $kropp); $kropp = ereg_replace("æ", "æ", $kropp); $kropp = ereg_replace("ø", "ø", $kropp); $kropp = ereg_replace("Ã¥", "å", $kropp); $struct = imap_fetchstructure($mbox,$msg); $contentParts = count($struct->parts); $vedlegg = imap_bodystruct($mbox,$msg,2); //Lager mer fornuftig format på data $datoArray = explode(" ", $date); //Formaterer dag if($datoArray[0] < 10) { $dag = "0"; $dag .= $datoArray[0]; } else { $dag = $datoArray[0]; } //Formaterer måned switch ($datoArray[1]) { case "Jan": $mnd = "01"; break; case "Feb": $mnd = "02"; break; case "Mar": $mnd = "03"; break; case "Apr": $mnd = "04"; break; case "May": $mnd = "05"; break; case "Jun": $mnd = "06"; break; case "Jul": $mnd = "07"; break; case "Aug": $mnd = "08"; break; case "Sep": $mnd = "09"; break; case "Oct": $mnd = "10"; break; case "Nov": $mnd = "11"; break; case "Dec": $mnd = "12"; break; } //Formaterer år $aar = $datoArray[2]; //Formaterer tid $otid = $datoArray[3]; $tid = substr($otid,0,2).substr($otid,3,2).substr($otid,6,2); //Setter sammen datoen $dato = $aar.$mnd.$dag."_".$tid; $filNavn = $vedlegg->parameters[0]->value; $filType = strrev(substr(strrev($filNavn),0,4)); $skrivefil = $katalog.$dato.$filType; if($filType == ".jpg" && !is_file($skrivefil)) //Dersom vedlegg er en .jpg-fil og filen ikke allerede finnes { //Finner innholdet til attachmenten $filInnhold = imap_fetchbody($mbox,$msg,2); $filInnhold = base64_decode($filInnhold); $bilde = imagecreatefromstring($filInnhold); //Lager bilde av rådata fra attachment $skrivefil = $katalog.$dato.$filType; //Lager filnavn //Lager selve bildet imagejpeg($bilde,$skrivefil); //Skriver bildet til disk chmod($skrivefil,0644); //Setter leserettigheter //Her kan man legge til hva man vil gjøre med dataene. //$subj er tittel på mailen //$kropp er body //$skrivefil inneholder sti til bildefilen som er skrevet. //$bilde inneholder rådata for bildet //Det kan være lurt å kjøre en imagedestroy($bilde) etterpå for å sikre at det blir slettet fra minnet. } } imap_delete($mbox,$msg); //Sletter mail som er behandlet } //Slutt på for-løkke som tar alle mailene imap_expunge($mbox); //Tømmer mailboksen imap_close($mbox); //Lukker mailboksen function get_mime_type(&$structure) { $primary_mime_type = array("TEXT", "MULTIPART","MESSAGE", "APPLICATION", "AUDIO","IMAGE", "VIDEO", "OTHER"); if($structure->subtype) { return $primary_mime_type[(int) $structure->type] . '/' .$structure->subtype; } return "TEXT/PLAIN"; } function get_part($stream, $msg_number, $mime_type, $structure = false, $part_number = false) { if(!$structure) { $structure = imap_fetchstructure($stream, $msg_number); } if($structure) { if($mime_type == get_mime_type($structure)) { if(!$part_number) { $part_number = "1"; } $text = imap_fetchbody($stream, $msg_number, $part_number); if($structure->encoding == 3) { return imap_base64($text); } else if($structure->encoding == 4) { return imap_qprint($text); } else { return $text; } } if($structure->type == 1) /* multipart */ { while(list($index, $sub_structure) = each($structure->parts)) { if($part_number) { $prefix = $part_number . '.'; } $data = get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix . ($index + 1)); if($data) { return $data; } } } } return false; } ?> Hva er feil ??? Endret 3. august 2005 av nthing Lenke til kommentar
Christian_ Skrevet 3. august 2005 Del Skrevet 3. august 2005 Hva er det som ikke funker? Får du noen feilmelding? Det er derfor feilmeldinger kommer fordi vi skal få vite hva som er feil Lenke til kommentar
nthing Skrevet 3. august 2005 Forfatter Del Skrevet 3. august 2005 Hva er det som ikke funker? Får du noen feilmelding? Det er derfor feilmeldinger kommer fordi vi skal få vite hva som er feil Får ikke kobla til.... Klarte ikke åpne mail, prøv igjen senere Lenke til kommentar
nthing Skrevet 3. august 2005 Forfatter Del Skrevet 3. august 2005 jeg fikk koblet til... Men bildet vil ikke bli lagret... :/ Lenke til kommentar
Christian_ Skrevet 3. august 2005 Del Skrevet 3. august 2005 Så nå står det at allt er fullført, men det blir ikke gjort? Lenke til kommentar
nthing Skrevet 3. august 2005 Forfatter Del Skrevet 3. august 2005 (endret) det kommer lissom hvit skjerm... ingen error... Jeg vet at det funker 50%(lissom) fordi mailene blir sletta! Menne... den $katalog skal det bare være mappene(bilder/mobil) eller skal det være selve sti'en(home/path/en/min/www/bilder/mobil/) ?? Endret 4. august 2005 av nthing Lenke til kommentar
nthing Skrevet 4. august 2005 Forfatter Del Skrevet 4. august 2005 (endret) *Slettet* Endret 5. august 2005 av nthing Lenke til kommentar
Yankes Skrevet 14. mai 2006 Del Skrevet 14. mai 2006 Hjeelp, jeg har det samma problemet! Alt skjer utenom at bildet blir lagret! Hva gjorde du for å få det til nthing? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå