Avatar billede engberg Juniormester
17. maj 2004 - 10:30 Der er 43 kommentarer og
1 løsning

Fra mail til webside.

Hejsa

Jeg vil gerne kunne sende en e-mail (fra mobilos) til en postkasse, som så bliver checket og hvor indholdet bliver lagt ud på en hjemmeside.

Jeg har IKKE egen server til rådighed, men kan få lavet cronjobs..

Er der nogen der kan hjælpe mig med det? Kan man overhovedet checke mail med php gennem pop3? (Det må ikke være imap, da jeg ikke kan finde et hotel der stiller det til rådighed gratis)..
Avatar billede jakobdo Ekspert
17. maj 2004 - 12:52 #1
Du kan godt tjekke pop3 konti via php!
Da du jo kan lave simpel socket kommunikation til pop3-serveren.
Avatar billede hammerhead Nybegynder
17. maj 2004 - 12:59 #2
Hej.

Du kan få en gratis, ikke commerciel konto hos Flexwindow

Indebærer at indholdet sendes til deres server, og du får så vist indholdet på din side via en lille script, som placeres hvor mailens indhold skal vises. Du kan endvidere sende det allerede oprettede indhold til dig selv.

http://www.flexwindow.com/index.html
Avatar billede engberg Juniormester
17. maj 2004 - 15:49 #3
jakobdo>> Kunne du uddybe det lidt ;-) Det ville være fedt at se lidt kode...

hammerhead>> Det ser spændende ud, men allerhelst ville jeg selv have kontrol over det hele... Ved denne løsning er det også kun mig der kan sende til siden - med mindre jeg uddeler passwordet til alle... :-/
Avatar billede jakobdo Ekspert
17. maj 2004 - 16:04 #4
Avatar billede engberg Juniormester
17. maj 2004 - 18:43 #5
Jeg har prøvet http://popmail.8bit.co.uk/ og det virker (altså ikke som jeg vil have det til, men det kan checke min pop3-mail)..

Og så har jeg prøvet den her relativt simple kode.. Som også virker - ud over at den ikke viser "body'en" af en email - kun subject og andre oplysninger...
Kunne man få den til at vise body delen af en mail?

<html><title>Moblog</title><body>
<?
require ("serverinfo.inc.php");
$fp = fsockopen($server, $port);
$dummy = fgets($fp, 1024);
fputs($fp, "USER $bruger\r\n");
$dummy = fgets($fp, 1024);
fputs($fp, "PASS $adgangskode\r\n");
$tredjeLinje = fgets($fp, 1024);
fputs($fp, "STAT\r\n");
$mails = fgets($fp, 1024);
$mails = split(" ", $mails);
$no_of_mails = $mails[1];

if (!$showmail)
{
   
    for ($i = 1; $i <= $no_of_mails; $i++)
    {
        fputs($fp, "TOP $i 0\r\n");
        while (substr($linje = fgets($fp, 1024), 0, 2) != chr(13).chr(10))
        {
            if (substr($linje, 0, 9) == "Subject: ")
            {
                $emne = htmlspecialchars(substr($linje, 9));
            }
            if (substr($linje, 0, 6) == "From: ")
            {
                $fra = htmlspecialchars(substr($linje, 6));
            }
            if (substr($linje, 0, 6) == "Date: ")
            {
                $dato = htmlspecialchars(substr($linje, 6));
            }
        }
        echo "$i.) <a href=\"$PHP_SELF?showmail=$i\">".$emne."</a><br/>\n";
    }
}

if ($showmail)
{
    echo "<a href=\"$PHP_SELF\">Tilbage</a> til oversigten.<br/>";
    fputs($fp, "RETR $showmail\r\n");
    $dummy = fgets($fp, 1024);

    while (substr($linje = fgets($fp, 1024), 0, 2) != chr(13).chr(10))
    {
        if (substr($linje, 0, 9) == "Subject: ")
        {
            $emne = htmlspecialchars(substr($linje, 9));
        }
        if (substr($linje, 0, 6) == "From: ")
        {
            $fra = htmlspecialchars(substr($linje, 6));
        }
        if (substr($linje, 0, 4) == "To: ")
        {
            $til = htmlspecialchars(substr($linje, 4));
        }
        if (substr($linje, 0, 6) == "Date: ")
        {
            $dato = htmlspecialchars(substr($linje, 6));
        }
    }
echo "Dato: ".$dato."<br/>\n";
echo "Fra: ".$fra."<br/>\n";
echo "Emne: ".$emne."<br/>\n";
$posttekst="-------POST---------<br/>";
while (substr($linje = fgets($fp, 1024), 0, 3) != ".".chr(13).chr(10))
    {
        $posttekst .= $linje;
    }
    $no_html = strip_tags($posttekst);
    $start = strpos ($no_html, "quoted-printable");
    $start=$start+17;
    $no_htmlstart = substr($no_html, $start);
    $slut=strpos($no_htmlstart, "------=");
    $no_htmlslut= substr($no_html, $start, $slut);
   
    echo "-----SIDST-----------<br/>".$no_htmlslut;
}


?>

</body>
</html>
Avatar billede Slettet bruger
17. maj 2004 - 19:37 #6
I stedet for selv at lege med sockets, kan du også bruge PHPs imap_-funktioner (Ja, de kan også snakke med en POP3)

Se på http://dk.php.net/manual/en/ref.imap.php og f.eks. http://dk.php.net/manual/en/function.imap-open.php
Avatar billede engberg Juniormester
17. maj 2004 - 22:33 #7
sandbox>> Jeg refererer lige fra mit spørgsmåls beskrivelse: "Det må ikke være imap, da jeg ikke kan finde et hotel der stiller det til rådighed gratis"...
Avatar billede Slettet bruger
17. maj 2004 - 22:39 #8
Så kan jeg jo passende referere (og skære ud i pap) fra mit indlæg: PHPs imap-funktioner kan også snakke med en POP3-server. Så du kan godt bruge PHPs indbyggede imap-funktioner selv om du ikke har en IMAP-postkasse.
Avatar billede engberg Juniormester
17. maj 2004 - 22:53 #9
;-)
Så finder jeg så den endnu større saks frem og viser dig, at det ikke er imap på postkassen der er problemet, men imap på det hotel (server) der kører mine phpfiler...
Avatar billede Slettet bruger
17. maj 2004 - 23:09 #10
Så beklager jeg, at jeg misforstod. Jeg havde faktisk regnet med at de funktioner var en del af en standard PHP-opsætning.

Til gengæld vidste jeg godt, at man de fleste steder kun kan få POP3-postkasser, og ikke IMAP. Det var derfor jeg troede, at det var i den ende problemet lå.
Avatar billede engberg Juniormester
17. maj 2004 - 23:12 #11
:-) Helt o.k.... Men jeg har stadig et problem... :-/
Avatar billede Slettet bruger
17. maj 2004 - 23:13 #12
Prøv at lave det her:

while (substr($linje = fgets($fp, 1024), 0, 3) != ".".chr(13).chr(10))
    {
        $posttekst .= $linje;
    }
    $no_html = strip_tags($posttekst);
    $start = strpos ($no_html, "quoted-printable");
    $start=$start+17;
    $no_htmlstart = substr($no_html, $start);
    $slut=strpos($no_htmlstart, "------=");
    $no_htmlslut= substr($no_html, $start, $slut);
 
    echo "-----SIDST-----------<br/>".$no_htmlslut;

om til:

while (substr($linje = fgets($fp, 1024), 0, 3) != ".".chr(13).chr(10))
    {
        echo $linje . "<br />";
    }
Avatar billede engberg Juniormester
17. maj 2004 - 23:49 #13
Så kommer message delen også med, men der kommer en hel masse linieskift for meget...
Avatar billede engberg Juniormester
17. maj 2004 - 23:51 #14
Der er så også lige det problem at et vedhæftet billede ligner lo**... Er ikke oversat - altså er det bare en masse tegn... :-(
Avatar billede engberg Juniormester
17. maj 2004 - 23:52 #15
Men jeg tror da seriøst vi nærmer os...
Avatar billede Slettet bruger
18. maj 2004 - 00:12 #16
OK, så har vi fundet ud af, at det bare var linierne efter while-løkken, som var lidt for hidsige med at fjerne data.

Så kan du lave

echo $linje . "<br />";

tilbage til

$posttekst .= $linje;

Og så er det lidt et spørgsmål om, hvor meget forskelligt, du skal kunne modtage. F.eks. hvis der er tale om en ren tekst-mail uden vedhæftede filer, så er der nemlig slet ikke den "quoted-printable"-tekst, som den oprindelige søger efter, og så springer den de første 17 bogstaver af den regulære mail over. Derudover vil der heller ikke være den "------=" til sidst, og så sletter den alt. (Og selv hvis den linie er der, så behøver den ikke nødvendigvis se nøjagtig sådan ud. Breve her fra Eksperten har for eksempel kun 2 minusser: --=_ )

For ikke at skulle lave en komplet mailklient, som kan forstå enhver mail, vil jeg foreslå dig at se på den rå kildetekst til mails, som den skulle fortolke.
Avatar billede engberg Juniormester
18. maj 2004 - 00:38 #17
O.k...

De ser således ud:

--mimemk00
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit

.... send an email with my new phone. Please respond if you recieve this, and tell me if you se the picture attached.. :-)
--mimemk00
Content-Type: image/jpeg;
name="04051200.JPG"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="04051200.JPG"

/9j/4AAQSkZJRgABAgACgAHgAAD/2wCEAA0JCgsKCA0LCgsODg0PEyAVExISEyccHhcgLikxMC4p
LSwzOko+MzZGNywtQFdBRkxOUlNSMj5aYVpQYEpRUk8BDg4OExETJhUVJk81LTVPT09PT09PT09P

Herefter en masse af samme slags og så slutter den med:

zgRrlentRJ20BIhSXOKuwNyAamOhUlc//9k=

--mimemk00--

Beklager at jeg er lidt hjælpeløs, men jeg kæmper med at forstå hvad det er der sker og det er ikke nemt at finde hjælp andre steder end her...
Avatar billede Slettet bruger
18. maj 2004 - 01:12 #18
OK, der er tre opgaver:

1) få pillet selve tekst og billede.ud
2) konvertere billedet til noget brugbart med base64_decode()-funktionen
3) Gemme billedet og derefter vise det.

Muligvis kan det lade sig gøre at vise billedet direkte med et <object>-element i stil med:

<OBJECT id="billede" data="data:image/jpeg;base64, ...base64 data..."></OBJECT>

Det er ved at være min sengetid, men du kan da lige læse lidt om base64_decode() http://dk2.php.net/manual/en/function.base64-decode.php
Avatar billede engberg Juniormester
18. maj 2004 - 01:21 #19
Mange tak for din hjælp indtil videre - og godnat...
Avatar billede engberg Juniormester
18. maj 2004 - 10:24 #20
Har prøvet lidt af hvert, men det vil ligesom ikke rigtig virke...

mimedelen er i $str ()
echo base64_decode($str);
echo "<img src='".base64_decode($str)."'>";
echo "<OBJECT id='billede' data='data:image/jpeg;base64,".$str."'></OBJECT>";
echo "<img alt='Mit billede' src='data:image/jpeg;base64,".$str."'>";

Har også fundet den her tråd: http://www.eksperten.dk/spm/475545

Hvor det ser ud til at de kan afkode mime - men det er til imap og jeg kan ikke lige gennemskue at oversætte det...

Jeg er heller ikke helt sikker på, at jeg har alt med til mimedelen.. Består den kun af de "sjove" tegn, eller skal "--mimemk00", "Content-Disposition: attachment" o.s.v. også med??
Avatar billede Slettet bruger
18. maj 2004 - 23:26 #21
Jeg går ud fra, at du har fundet ud af at pille teksten ud så?

Til billedet skal du kun bruge selve linierne med de underlige bogstaver. Resten burde ikke ændres medmindre du skifter telefon. (Jo filnavnet måske, men der er det smartere at lave et selv på serveren.)

Du kan prøve:

$ifp = fopen( 'testbilled.jpg', "wb" );
fwrite( $ifp, base64_decode( $str ) );
fclose( $ifp );

echo '<img src="testbilled.jpg" alt="">';
Avatar billede engberg Juniormester
20. maj 2004 - 10:41 #22
Nææ.. jeg har ikke fundet ud af hvordan jeg skal få selve koden pillet ud, men nu prøver jeg bare, hvor jeg har kopieret koden manuelt ind i $str-variablen....
Så må det løses senere.. :-)

Jeg har prøvet din kode og der bliver også oprettet et .jpg billede, men det kan ikke vises - heller ikke hvis jeg downloader billedet kan det bruges...
Avatar billede engberg Juniormester
20. maj 2004 - 10:44 #23
Koden som jeg prøver med ser således ud:

<?php
$str="/9j/4AAQSkZJRgABAgACgAHgAAD/2wCEAA0
        ...mange sjove tegn....
zgRrlentRJ20BIhSXOKuwNyAamOhUlc//9k=";

$ifp = fopen('test.jpg',"wb");
fwrite($ifp, base64_decode($str));
fclose($ifp);

echo '<img src="test.jpg" alt="">';
?>
Avatar billede Slettet bruger
20. maj 2004 - 12:36 #24
Jeg fik en ide. Måske vil det hjælpe at fjerne tegn, der ikke er en del af selve base64-koden. det kan gøres med følgende kode:

$str=preg_replace("/[^A-Za-z0-9+\/=]/",'',$str);
Avatar billede engberg Juniormester
20. maj 2004 - 20:57 #25
Du er jo genial! :-)

Jeg havde ellers lige oprettet et nyt spørgsmål, men det kan jeg jo godt lukke igen - din idé virker!!! :-)
Avatar billede engberg Juniormester
20. maj 2004 - 21:27 #26
Nu har jeg lavet en ting, som kan finde ud af om der er et billede i mailen.. Men hvordan piller jeg alt mellem .JPG" og --mimemk00-- ud, så det kun er det der står i $str der bliver decoded???
Avatar billede Slettet bruger
20. maj 2004 - 21:29 #27
Det vil jeg så kalde en bug i base64_decode(), for i MIME-standarden står udtrykkeligt, at tegn, der ligger udenfor bare skal ignoreres. Det står i afsnit 6.8 af http://www.faqs.org/rfcs/rfc2045 lige efter tabellen med gyldige tegn. Men skidt, nu ignorerer vi det i stedet for at lade decoderen gøre det ;-)
Avatar billede Slettet bruger
20. maj 2004 - 21:29 #28
Det skal vi også bruge en regexp til. Øjeblik, jeg tænker lige.
Avatar billede engberg Juniormester
20. maj 2004 - 21:58 #29
Hmm.. har også prøvet at tænke....

preg_match(".jpg(.*)--mime", $formeget, $str);

med der er problemer med "-tegnene tror jeg... :-/
Avatar billede engberg Juniormester
20. maj 2004 - 22:20 #30
Så har jeg *næsten* fundet ud af at trække filnavnet ud af strengen...
preg_match("/filename=\"(.*)\"/", $formeget, $filnavnet);
echo $filnavnet[0];

Men desværre skriver den: filename="04051400.JPG" og tager altså for meget med.. og med selve mimedelen kan jeg skutte rigtigt få det til at fungere....
preg_match("/.jpg\"(.*)--mime/", $formeget, $str);
echo $str[0];

giver bare en tom streng.... :-/
Avatar billede Slettet bruger
20. maj 2004 - 22:26 #31
Nu har jeg lavet noget, som jeg regner med vil virke. Det skal sættes ind ved (og erstatte) while-løkken i det script, du postede tidligere. Bemærk at denne gang har jeg ændret linien lige før løkken.

$posttekst=''
while (substr($linje = fgets($fp, 1024), 0, 3) != ".".chr(13).chr(10))
    {
        $posttekst.=$linje;
    }

// Bare for hvis der skulle være mere end et billede eller mere end en tekst.
$billeder=array();
$tekst=array();

if(preg_match("/^(--[^\r\n\s]*\r\n)Content-Type/",$posttekst,$match)){
  $mimemarker=$match[1];
  foreach(explode($mimemarker,$posttekst) as $mimepart){
    preg_match("/\r\n\r\n.*$/s",$mimepart,$indhold);
    preg_match("/^Content-Type: ([^;])/",$mimepart,$match);
    if($match[1]=='text/plain'){
      $tekst[]=$indhold[0];
    } elseif ($match[1]=='image/jpeg'){
      $billeder[]=base64_decode(preg_replace("/[^A-Za-z0-9+\/=]/",'',$indhold[0]));
    }
  }
}

foreach($tekst as $tekstpart){
  echo $tekstpart . "<br>";
}

foreach($billeder as $tal => $billede){
  $ifp = fopen('test'.$tal.'.jpg',"wb");
  fwrite($ifp, base64_decode($str));
  fclose($ifp);
  echo '<img src="test'.$tal.'.jpg" alt="">';
}
Avatar billede engberg Juniormester
20. maj 2004 - 22:46 #32
Jeg beklager meget, men dit forslag returnerer ikke nogen tekst... :-/
Avatar billede engberg Juniormester
20. maj 2004 - 22:47 #33
Der bliver heller ikke skrevet nogen fil på serveren..
Avatar billede engberg Juniormester
20. maj 2004 - 23:03 #34
Det er ikke for at være uhøflig, men din sidste post smed mig af - og jeg kan bedst lide, når jeg forstår koden i de scripts jeg bruger.... Og det behøver ikke at være så advanceret, som du foreslår...
Så vidt jeg kan se er det i linien:

preg_match("/\r\n\r\n.*$/s",$mimepart,$indhold);

at du gør nogenlunde det jeg gerne vil kunne... altså at pille alt mellem .jpg" og --mime ud...
Jeg ved jeg er krævende :-)
Avatar billede Slettet bruger
21. maj 2004 - 00:40 #35
OK, så lad os prøve en simplere udgave, som bare går ud fra, at der måske er en tekst, og måske et billede, og ikke mere.

$posttekst=''
while (substr($linje = fgets($fp, 1024), 0, 3) != ".".chr(13).chr(10)) {
  $posttekst.=$linje;
}

if (preg_match("/JPG\"[^A-Za-z0-9+\/=]*(.*)--/s", $posttekst, $billedmatch)){
  $ifp = fopen('test.jpg',"wb");
  fwrite($ifp, base64_decode($billedmatch[1]));
  fclose($ifp);
  echo '<img src="test.jpg" alt="">';
}

if (preg_match("/Content-Type:\stext\/plain;\s\S+\s+Content-Transfer-Encoding:\s\S+\s+(.*)--mime/s" ,$posttekst, $tekstmatch)){
  echo $tekstmatch[1];
}
Avatar billede Slettet bruger
21. maj 2004 - 00:44 #36
Den sidste kommer måske til at tage billedet med, hvor den kun skal tage tekst. Det kan rettes således:

f (preg_match("/Content-Type:\stext\/plain;\s\S+\s+Content-Transfer-Encoding:\s\S+\s+(.*?)--mime/s", $posttekst, $tekstmatch)){
  echo $tekstmatch[1];
}
Avatar billede engberg Juniormester
22. maj 2004 - 09:45 #37
Hmm.. Tekstdelen virker fint! Men, men.. Der bliver lavet et billede på serveren, men den får for meget med:

Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="04051400.JPG" /9j/4.........

og til sidst:

KtYVgbG1b5QfnYHqfS pkNH/9k= --mimemk00

Og det kan den tydeligvis ikke kapere... Det bliver i hvert tilfælde ikke til et billede.... Jeg har brugt din idé fra tidligere om at fjerne uvedkomne tegn, så forslaget nu ser således ud:

while (substr($linje = fgets($fp, 1024), 0, 3) != ".".chr(13).chr(10))
    {
    $dethele = $dethele.$linje;
        }

if (preg_match("/JPG\"[^A-Za-z0-9+\/=]*(.*)--/s", $dethele, $billedmatch)){
  $ifp = fopen('test2.jpg',"wb");
  $billedmatch[1]=preg_replace("/[^A-Za-z0-9+\/=]/",'',$billedmatch[1]);
  fwrite($ifp, base64_decode($billedmatch[1]));
  fclose($ifp);
  echo '<img src="test2.jpg" alt="">';
}

if (preg_match("/Content-Type:\stext\/plain;\s\S+\s+Content-Transfer-Encoding:\s\S+\s+(.*?)--mime/s", $dethele,

$tekstmatch)){
  echo $tekstmatch[1];
}
Avatar billede engberg Juniormester
22. maj 2004 - 09:50 #38
Hmm... og dog... tekstdelen virker kun, hvis der også er et billede...
Avatar billede Slettet bruger
22. maj 2004 - 11:15 #39
Åhja, filnavnet står jo to gange. Prøv at sætte et U helt til sidst i den preg_match, der fanger billedet.

Og for at kunne klare tekst alene, skal vi lige pille ved linierne, hvor headers fra mailen bliver bearbejdet:


    while (substr($linje = fgets($fp, 1024), 0, 2) != chr(13).chr(10))
    {
        if (substr($linje, 0, 9) == "Subject: ")
        {
            $emne = htmlspecialchars(substr($linje, 9));
        }
        if (substr($linje, 0, 6) == "From: ")
        {
            $fra = htmlspecialchars(substr($linje, 6));
        }
        if (substr($linje, 0, 4) == "To: ")
        {
            $til = htmlspecialchars(substr($linje, 4));
        }
        if (substr($linje, 0, 6) == "Date: ")
        {
            $dato = htmlspecialchars(substr($linje, 6));
        }
        if (substr($linje,0,14 =='Content-Type: ')
        {
            $contenttype=substr($linje, 6);
        }

    }


Så kan du i udskriftdelen tilføje dette:

if (preg_match("/text\/plain/",$contenttype){
  echo $dethele;
}
Avatar billede engberg Juniormester
22. maj 2004 - 12:29 #40
:-)
Det virker stadigt ikke...
if (preg_match("/JPG\"[^A-Za-z0-9+\/=]*(.*)--/sU", $dethele, $billedmatch)){
tager stadig for meget med og:
if (preg_match("/text\/plain/",$contenttype)){
  echo $dethele;
}
Får ikke det sidste til at blive udskrevet også....

Men det er det første problem der bekymrer mig mest... Det sidste kan jeg måske nog finde ud af senere....
Avatar billede engberg Juniormester
22. maj 2004 - 22:34 #41
Nu virker det sku' for mig.... Her er koden og mange tak for hjælpen...
Disse 3 filer udgør et komplet mobil log system...

---------------------- index.php ---------------------------------

<?
/*                                          */
/* Copyright (c) Kasper Schmidt Engberg 2004 */
/*                                          */
require ("serverinfo.inc.php");
include ("mime.php");

echo "<html><title>".$overskrift."</title><body>";

$fp = fsockopen($server, $port);
$dummy = fgets($fp, 1024);
fputs($fp, "USER $bruger\r\n");
$dummy = fgets($fp, 1024);
fputs($fp, "PASS $adgangskode\r\n");
$tredjeLinje = fgets($fp, 1024);
fputs($fp, "STAT\r\n");
$mails = fgets($fp, 1024);
$mails = split(" ", $mails);
$no_of_mails = $mails[1];

if (!$showmail && !$all)
{
   
    for ($i = 1; $i <= $no_of_mails; $i++)
    {
        fputs($fp, "TOP $i 0\r\n");
        while (substr($linje = fgets($fp, 1024), 0, 2) != chr(13).chr(10))
        {
            if (substr($linje, 0, 9) == "Subject: ")
            {
                $emne = htmlspecialchars(substr($linje, 9));
            }
            if (substr($linje, 0, 6) == "From: ")
            {
                $fra = htmlspecialchars(substr($linje, 6));
            }
            if (substr($linje, 0, 6) == "Date: ")
            {
                $dato = htmlspecialchars(substr($linje, 6));
            }
        }
        echo "$i.) <a href=\"$PHP_SELF?showmail=$i\">".$emne."</a><br/>\n";
    }

echo "<br><br><a href=\"$PHP_SELF?all=2\">Vis alle</a><br/>\n";
echo "<br><br><a href=\"$PHP_SELF?forste=2\">Vis de første 3</a><br/>\n";

}

function showmail($fp, $showmail)
{
    fputs($fp, "RETR $showmail\r\n");
    $dummy = fgets($fp, 1024);

    while (substr($linje = fgets($fp, 1024), 0, 2) != chr(13).chr(10))
    {
        if (substr($linje, 0, 9) == "Subject: ")
        {
            $emne = htmlspecialchars(substr($linje, 9));
        $emne = Danske_Tegn($emne);
        }
        if (substr($linje, 0, 6) == "From: ")
        {
            $fra = htmlspecialchars(substr($linje, 6));
        $fra = str_replace ("kasper.engberg@post.3.dk","Kaspers Mobil", $fra);
        $fra = str_replace ("kasperengberg@hotmail.com","Kaspers E-mail", $fra);
        }
        if (substr($linje, 0, 4) == "To: ")
        {
            $til = htmlspecialchars(substr($linje, 4));
        }
        if (substr($linje, 0, 6) == "Date: ")
        {
            $dato = htmlspecialchars(substr($linje, 6));
        $dato = Dansk_Dato($dato);
        }
    }


Layout($dato,$fra,$emne);

while (substr($linje = fgets($fp, 1024), 0, 3) != ".".chr(13).chr(10))
    {
    $dethele = $dethele.$linje."<br>";
    $dethele2 = $dethele2.$linje;
        }


if (stristr($dethele2,"base64")) {

    $filnavn = Decode_Mime($dethele2);
    echo "<br><center><img src='".$filnavn."' border=0></center>";

    /* Fjern de overskydende koder */
    preg_match("/printable.*?(.+)--mime/is", $dethele2, $temper);
    preg_match("/.*?(.+)--mime/is", $temper[1], $temp);
    $udskrift = Danske_Tegn($temp[1]);

} else {

    $udskrift = Danske_Tegn($dethele);

}

echo "<br>".$udskrift;
}



if ($showmail) {
    showmail($fp,$showmail);
}

if ($all) {
    for ($i=$no_of_mails; $i>0; $i--)
    {
      showMail($fp,$i);
      echo "<br>------------- Næste post -------------<br>";
    }
}

if ($forste) {
    for ($i=$no_of_mails; $i>$no_of_mails-3; $i--)
    {
      showMail($fp,$i);
      echo "<br>------------- Næste post -------------<br>";
    }
}
?>

</body>
</html>


------------------------ mime.php --------------------------------

<?php

function Decode_Mime ($formeget) {

    preg_match("/(filename=\")(.*)(\")/", $formeget, $fil);

    preg_match("/jpg\".*?(.+)--mim/is", $formeget, $mimedel);

    preg_match("/jpg\".*?(.+)/is", $mimedel[1], $mimedelen);

    $mimedelen[1] = preg_replace("/[^A-Za-z0-9+\/=]/",'',$mimedelen[1]);
   
    $ifp = fopen($fil[2],"wb");

    fwrite($ifp, base64_decode($mimedelen[1]));

    fclose($ifp);

    return ($fil[2]);

}


function Danske_Tegn ($tekst) {

    $tekst = str_replace ("=C3=A6","æ", $tekst);
    $tekst = str_replace ("=C3=B8","ø", $tekst);
    $tekst = str_replace ("=C3=A5","å", $tekst);

    $tekst = str_replace ("=C3=86","Æ", $tekst);
    $tekst = str_replace ("=C3=98","Ø", $tekst);
    $tekst = str_replace ("=C3=85","Å", $tekst);

    $tekst = str_replace ("=?UTF-8?Q?","", $tekst);
    $tekst = str_replace ("_"," ", $tekst);
    $tekst = str_replace ("?=","", $tekst);
    $tekst = str_replace ("=","", $tekst);

    return ($tekst);

}

function Dansk_Dato ($tekst) {

    $tekst = str_replace ("Mon,","Mandag d.", $tekst);
    $tekst = str_replace ("Tue,","Tirsdag d.", $tekst);
    $tekst = str_replace ("Wed,","Onsdag d.", $tekst);
    $tekst = str_replace ("Thu,","Torsdag d.", $tekst);
    $tekst = str_replace ("Fri,","Fredag d.", $tekst);
    $tekst = str_replace ("Sat,","Lørdag d.", $tekst);
    $tekst = str_replace ("Sun,","Søndag d.", $tekst);

    $tekst = str_replace (" January",". Januar", $tekst);
    $tekst = str_replace (" February",". Februar", $tekst);
    $tekst = str_replace (" March",". Marts", $tekst);
    $tekst = str_replace (" April",". April", $tekst);
    $tekst = str_replace (" May",". Maj", $tekst);
    $tekst = str_replace (" June",". Juni", $tekst);
    $tekst = str_replace (" July",". Juli", $tekst);
    $tekst = str_replace (" August",". August", $tekst);
    $tekst = str_replace (" September",". September", $tekst);
    $tekst = str_replace (" October",". Oktober", $tekst);
    $tekst = str_replace (" November",". November", $tekst);
    $tekst = str_replace (" December",". December", $tekst);

    $tekst = str_replace (" +0100","", $tekst);
    $tekst = str_replace (" +0200","", $tekst);

    return ($tekst);

}


function Layout ($dato,$fra,$emne) {

echo "<h3>".$emne."</h3>";
echo "<i>Modtaget fra ".$fra.$dato."</i><br>";

}

?>

--------------------------- serverinfo.inc.php -----------------------

<?
    $bruger="Kasper";//Dit POP-brugernavn
    $adgangskode="password";//Din POP-adgangskode    $server="pop.dinserver.dk";//Servernavn
    $port="110";

    $overskrift="Engbergs MobLog";


?>
Avatar billede engberg Juniormester
23. maj 2004 - 12:35 #42
sandbox>> vil du ikke lige ligge et svar, så jeg kan komme af med lidt point...
Avatar billede Slettet bruger
23. maj 2004 - 16:42 #43
Jo, det kommer her. Godt, at du fandt ud af det.

Jeg havde overvejet at lave noget lignende selv, så jeg kan måske få inspiration fra din kode. (Dog ikke så meget, for jeg vil nok køre noget på min mailserver, som smider posten direkte i database.)
Avatar billede engberg Juniormester
25. maj 2004 - 16:30 #44
Jamen det er da altid rart at kunne hjælpe ;-)
Den færdige version kører på:
http://kasper.schmidt.engberg.person.emu.dk/moblog/index.htm

Der er stadig en hel del at gøre, men indtil videre kører det da...
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