Gå til innhold

Mail via mobilen


Anbefalte innlegg

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 av nthing
Lenke til kommentar
Videoannonse
Annonse

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 av nthing
Lenke til kommentar
  • 9 måneder senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...