/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
PHP og IMAP
Fra : Frank Nørvig


Dato : 25-08-01 14:09

Hejsa

Jeg er igang med at skrive en webmail client og skal forbi mit første
"bump".
Jeg kan sagtens få den til at læse INBOX, headers, body etc. men når jeg
sender fra f.eks. outlook med afsender "Frank Nørvig" kommer from til at se
således ud:
=?iso-8859-1?Q?Frank_N=F8rvig?=

Jeg ved det er et spørgsmål om at decode det om til danske tegn, men hvilken
funktion skal jeg bruge?

Med venlig hilsen
Frank Nørvig



 
 
Jakob Kirkegaard (25-08-2001)
Kommentar
Fra : Jakob Kirkegaard


Dato : 25-08-01 14:12

Saturday 25 August 2001 15:08 skrev Frank Nørvig:

> Jeg ved det er et spørgsmål om at decode det om til danske tegn, men
> hvilken funktion skal jeg bruge?

http://www.php.net/manual/en/function.imap-mime-header-decode.php

Funktionen er beskrevet - sjovt nok - under afsnittet om IMAP.

--
mvh Jakob Kirkegaard

Jonas Koch Bentzen (25-08-2001)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 25-08-01 14:51

Frank Nørvig wrote:

> Jeg er igang med at skrive en webmail client og skal forbi mit første
> "bump".
> Jeg kan sagtens få den til at læse INBOX, headers, body etc. men når jeg
> sender fra f.eks. outlook med afsender "Frank Nørvig" kommer from til at
> se således ud:
> =?iso-8859-1?Q?Frank_N=F8rvig?=
>
> Jeg ved det er et spørgsmål om at decode det om til danske tegn, men
> hvilken funktion skal jeg bruge?

Dit spørgsmål er blevet besvaret for mindre end en uge siden i tråden
"Decode lidt iso. :)".

--
Jonas Koch Bentzen

Frank Nørvig (25-08-2001)
Kommentar
Fra : Frank Nørvig


Dato : 25-08-01 15:50

> Dit spørgsmål er blevet besvaret for mindre end en uge siden i tråden
> "Decode lidt iso. :)".

Ok, mange tak begge to.
Så kommer spørgsmål nummer 2:

Når jeg åbner en mail med IMAP_BODY ser det ganske udemærket ud, indtil
mailen indeholder en attached fil.

Så vidt jeg kan forstå i PHP manualen, så skal jeg bruge imap_fetchstructure
til at se hvordan mailen er bygget op, men findes der ikke en forholdsvis
simpel rutine til at sige "Dette er mail-body" og "Dette er attached fil",
og derefter vise et link hvor man kan gemme filen lokalt?
Jeg har prøvet at lede efter eksempler, men der er desværre ikke alt for
mange der har webmail/imap kode liggende.

Mvh Frank Nørvig



Frank Nørvig (25-08-2001)
Kommentar
Fra : Frank Nørvig


Dato : 25-08-01 17:32

> simpel rutine til at sige "Dette er mail-body" og "Dette er attached fil",
> og derefter vise et link hvor man kan gemme filen lokalt?
> Jeg har prøvet at lede efter eksempler, men der er desværre ikke alt for
> mange der har webmail/imap kode liggende.

Tilføjelse:

Jeg er kommet så langt til, at når jeg modtager en mail, og kun vil se selve
text-body, bruger jeg kommandoen "$indhold=imap_fetchbody($mbox,
$val->msgno, 1);" ... På den måde får jeg vist den første MIME-del, hvilket
jeg går ud fra altid er selve brevet/brødteksten?

Hvis jeg bruger "imap_fetchbody($mbox, $val->msgno, 2);" kan jeg vise del 2,
hvilket er første attachment, eller HTML-kode, hvis afsender har sendt
beskeden med HTML-koder (f.eks. fra outlook).

Hvis jeg gerne vil lave så del 2 bliver sendt som binær fil istedet for vist
på skærmen, hvilken kommando skal jeg bruge? Jeg går ud fra at det er en
download-funktion af en art, men hvordan får jeg sendt indholdet af
imap_fetchbody som en fil til brugeren, uden at skulle gemme indholdet i en
temp-fil på serveren først?

Mvh Frank



Nezar Nielsen (25-08-2001)
Kommentar
Fra : Nezar Nielsen


Dato : 25-08-01 18:22

"Frank Nørvig" <uzi4u@uzi4u.dk> wrote in message
news:3b87d2c2$0$261$edfadb0f@dspool01.news.tele.dk...

> Hvis jeg gerne vil lave så del 2 bliver sendt som binær fil istedet for
vist
> på skærmen, hvilken kommando skal jeg bruge? Jeg går ud fra at det er en
> download-funktion af en art, men hvordan får jeg sendt indholdet af
> imap_fetchbody som en fil til brugeren, uden at skulle gemme indholdet i
en
> temp-fil på serveren først?

Hejsa,

Well, så skal du lave et script der bare læser den mime-del, finder ud af
content-type på den(det er vist et sted at finde i resultatet fra
fetchstructure), sender den content-type som header, og sender indholdet af
den mime-del(efter det er blevet base64 decodet(eller hvilken encoding det
nu har).

--
Mvh. Nezar Nielsen
http://fez.dk/




Frank Nørvig (25-08-2001)
Kommentar
Fra : Frank Nørvig


Dato : 25-08-01 18:35

> Well, så skal du lave et script der bare læser den mime-del, finder ud af
> content-type på den(det er vist et sted at finde i resultatet fra
> fetchstructure), sender den content-type som header, og sender indholdet
af
> den mime-del(efter det er blevet base64 decodet(eller hvilken encoding det
> nu har).

Ok, det er vel til at forholde sig til. Jeg kan sagtens få hentet
content-type ud af mime-delen, men jeg sidder fast mht. filnavnet. Jeg kan
gætte mig frem til at det er under "parameters", men der står ikke
umiddelbart noget i dokumentationen om hvad de er beskrevet som i det
array...

Jeg gør følgende:

$struktur=imap_fetchstructure($mbox, $val->msgno);
$parameter_arr = $struktur->parameters;

Men hvad gør jeg derefter? Og når jeg så skal til at sende filen med Header,
hvordan navngiver jeg så filen og får en "Gem som" boks frem på skærmen?

Mvh Frank



Jonas Koch Bentzen (25-08-2001)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 25-08-01 18:38

Frank Nørvig wrote:

> Så vidt jeg kan forstå i PHP manualen, så skal jeg bruge
> imap_fetchstructure til at se hvordan mailen er bygget op, men findes der
> ikke en forholdsvis simpel rutine til at sige "Dette er mail-body" og
> "Dette er attached fil", og derefter vise et link hvor man kan gemme filen
> lokalt? Jeg har prøvet at lede efter eksempler, men der er desværre ikke
> alt for mange der har webmail/imap kode liggende.

Jeg har! : ) (Se linket i min signatur). Den måde, jeg har gjort det på, er
følgende: Jeg fortolker brevet (manuelt, eftersom jeg ikke bruger PHP's
IMAP-funktioner til det) og finder ud af Content-Type mm. for hvert enkelt
del. Hvis det er rent tekst, bliver det vist til brugeren. Hvis det er
noget, der ikke kan vises til brugeren, så gemmes indholdet (f.eks. et
base64-encodet billede) i et skjult formularfelt. Der laves også links til
en viewAttachment.php-fil for hver vedhæftede fil. Linkene afsender så
formularen til viewAttachment, som via POST modtager den base64-encodede
fil, afkoder den, sender de korrekte headere og derefter indholdet.

Min måde at gøre det på - den med at gemme alle vedhæftede filer i et
skjult formularfelt på den side, der også viser selve ebrevet - er ikke
nødvendigvis den bedste løsning. Min metode har den ulempe, at HTML-siden
kan blive meget stor (og dermed tage lang tid at indlæse), hvis der er
mange, store vedhæftede filer. Metoden har til gengæld den fordel, at det
ikke er nødvendigt at læse/fortolke brevet to gange og belaste POP-serveren
ved at læse det hele to gange. Det skulle man nemlig gøre, hvis man på den
side, der viste brevets indhold, bare havde links til hver enkelt vedhæftet
fil: "viewAttachment.php?whichPart=2". I så fald skulle viewAttachment.php
så gå ind og fortolke brevet igen og vise den relevante del af brevet.

--
Jonas Koch Bentzen

http://understroem.dk/Net/Programmer

Søg
Reklame
Statistik
Spørgsmål : 177506
Tips : 31968
Nyheder : 719565
Indlæg : 6408561
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste