|
| æøå ser underlige ud i mail fra php script Fra : Michael Jensen |
Dato : 27-08-09 10:47 |
|
Hej!
Jeg er løbet ind i et problem, som jeg ikke kan genneskue hvordan
jeg løser.
Jeg har lavet(fundet på nettet)et php script, der sammen med
noget HTML kode, giver mulighed for at have en kontakt formular
på min hjemmeside, som kunderne kan sende en mail til os.
Det grundlæggende i scriptet virker fint nok, men hvis man bruger
æøå i kontakt formularen på hjemmesiden, bliver de til nogle
mytiske tegn i den mail der genereres af PHP scriptet.
Kontakt formularen kan ses på bo-inn.dk/page007.html.
selve PHP scriptet hedder kontaktformular.php og det har jeg
fundet på
kimludvigsen.dk/programmer-internet-kompozer-trin-php.php#kontakt
formular.
Der ikke noget SQL indvolveret.
Jeg skal lige sige, at jeg er temmelig grøn i HTML og PHP
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Kim Ludvigsen (27-08-2009)
| Kommentar Fra : Kim Ludvigsen |
Dato : 27-08-09 15:12 |
|
Michael Jensen skrev:
> Det grundlæggende i scriptet virker fint nok, men hvis man bruger
> æøå i kontakt formularen på hjemmesiden, bliver de til nogle
> mytiske tegn i den mail der genereres af PHP scriptet.
Vi er ved at prøve at løse problemet i mit forum:
http://kimludvigsen.dk/phpbb3/viewtopic.php?f=2&t=6824662
Problemet må være i tegnsætsangivelsen, men det gør
tilsyneladende ingen forskel at indsætte en header-linje med
tegnsætsangivelse i scriptet. I hvert fald ikke mht. emnelinjen.
--
Mvh. Kim Ludvigsen
Undgå snavs og uønskede personer på computeren:
http://pc-sikkerhed.dk
| |
Dan Storm (27-08-2009)
| Kommentar Fra : Dan Storm |
Dato : 27-08-09 16:18 |
|
Kim Ludvigsen skrev:
> Michael Jensen skrev:
>
>> Det grundlæggende i scriptet virker fint nok, men hvis man bruger
>> æøå i kontakt formularen på hjemmesiden, bliver de til nogle
>> mytiske tegn i den mail der genereres af PHP scriptet.
>
> Vi er ved at prøve at løse problemet i mit forum:
> http://kimludvigsen.dk/phpbb3/viewtopic.php?f=2&t=6824662
>
> Problemet må være i tegnsætsangivelsen, men det gør tilsyneladende ingen
> forskel at indsætte en header-linje med tegnsætsangivelse i scriptet. I
> hvert fald ikke mht. emnelinjen.
>
Et hurtigt kig i den tråd du referer til bemærker jeg at selve
kontaktsiden benytter UTF-8 men at kontaktformular.php benytter det
tegnsæt som serveren er defaultet til (sikkert ISO-8859-1).
Det vil give problemer for kontaktformular.php når det variabler der
modtages sendes i UTF-8 er derfor vil modtageren få de mærkelige tegn.
Om problemet er det somme hos OP her i gruppen skal jeg ikke kunne sige,
men det kunne man da måske forestille sig.
--
Dan Storm - storm at err0r dot dk / http://err0r.dk
People who claim they don't let little things bother
them have never slept in a room with a single mosquito.
| |
Kim Ludvigsen (27-08-2009)
| Kommentar Fra : Kim Ludvigsen |
Dato : 27-08-09 19:23 |
|
Dan Storm skrev:
> Kim Ludvigsen skrev:
>> Michael Jensen skrev:
>>
>>> Det grundlæggende i scriptet virker fint nok, men hvis man bruger
>>> æøå i kontakt formularen på hjemmesiden, bliver de til nogle
>>> mytiske tegn i den mail der genereres af PHP scriptet.
> Et hurtigt kig i den tråd du referer til bemærker jeg at selve
> kontaktsiden benytter UTF-8 men at kontaktformular.php benytter det
> tegnsæt som serveren er defaultet til (sikkert ISO-8859-1).
Jeg har fået nogle prøvemails, og så vidt jeg kan se, så
skal der blot indsættes en headerlinje i scriptet med utf-8.
Der er stadig problemer, men det skyldes en tekst som
udskrives af scriptet, og scriptet et gemt som ansi.
Jeg har foreslået spørger at indsætte uft-8-headeren i
scriptet og så at gemme scriptet som utf-8. Jeg venter på en
tilbagemelding om virkningen, men det burde virke.
--
Mvh. Kim Ludvigsen
http://pc-sikkerhed.dk
| |
Dan Storm (27-08-2009)
| Kommentar Fra : Dan Storm |
Dato : 27-08-09 20:26 |
|
Kim Ludvigsen skrev:
> Jeg har fået nogle prøvemails, og så vidt jeg kan se, så skal der blot
> indsættes en headerlinje i scriptet med utf-8. Der er stadig problemer,
> men det skyldes en tekst som udskrives af scriptet, og scriptet et gemt
> som ansi.
At scriptet er gemt som ANSI har overordnet set ikke nogen betydning.
Hvis scriptet indledes med at fortælle hvilket tegnsæt der skal bruges
(enten i form af en header eller hvis filen er gemt som UTF-8) bør det
ikke være noget problem.
> Jeg har foreslået spørger at indsætte uft-8-headeren i scriptet og så at
> gemme scriptet som utf-8. Jeg venter på en tilbagemelding om virkningen,
> men det burde virke.
>
Det virker også som den mest korrekte løsning.
--
Dan Storm - storm at err0r dot dk / http://err0r.dk
People who claim they don't let little things bother
them have never slept in a room with a single mosquito.
| |
Stig Johansen (27-08-2009)
| Kommentar Fra : Stig Johansen |
Dato : 27-08-09 23:41 |
|
Dan Storm wrote:
> Om problemet er det somme hos OP her i gruppen skal jeg ikke kunne sige,
> men det kunne man da måske forestille sig.
Han har rod i sine tegnsæt.
Serveren (OP's) leverer:
Content-Type: text/html
hvilket pr. default er iso-8859-1.
I hans HTML skriver han så:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Når nu serveren er sat til iso-8859-1, ville jeg nok holde det hele i
iso-8859-1 frem for at rede frem og tilbage mellem tegnsættene.
--
Med venlig hilsen
Stig Johansen
| |
Dan Storm (27-08-2009)
| Kommentar Fra : Dan Storm |
Dato : 27-08-09 23:49 |
|
Stig Johansen skrev:
> Han har rod i sine tegnsæt.
> Serveren (OP's) leverer:
> Content-Type: text/html
> hvilket pr. default er iso-8859-1.
>
> I hans HTML skriver han så:
> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Om det kun er Firefox der opfører sig således skal jeg ikke kunne sige;
men idét serveren ikke leverer tegnsættet, vil Firefox rette end efter
meta-tagget og jeg får derfor serveret siden i UTF-8.
Men idet jeg rammer kontaktformular.php er jeg pludseligt tilbage i
ISO-8859-1 og så opstår problematikken.
> Når nu serveren er sat til iso-8859-1, ville jeg nok holde det hele i
> iso-8859-1 frem for at rede frem og tilbage mellem tegnsættene.
Enig - det nemmeste er at holde sig til et tegnsæt.
--
Dan Storm - storm at err0r dot dk / http://err0r.dk
People who claim they don't let little things bother
them have never slept in a room with a single mosquito.
| |
Birger Sørensen (27-08-2009)
| Kommentar Fra : Birger Sørensen |
Dato : 27-08-09 16:35 |
|
Kim Ludvigsen har bragt dette til verden:
> Michael Jensen skrev:
>
>> Det grundlæggende i scriptet virker fint nok, men hvis man bruger
>> æøå i kontakt formularen på hjemmesiden, bliver de til nogle
>> mytiske tegn i den mail der genereres af PHP scriptet.
>
> Vi er ved at prøve at løse problemet i mit forum:
> http://kimludvigsen.dk/phpbb3/viewtopic.php?f=2&t=6824662
>
> Problemet må være i tegnsætsangivelsen, men det gør tilsyneladende ingen
> forskel at indsætte en header-linje med tegnsætsangivelse i scriptet. I hvert
> fald ikke mht. emnelinjen.
Det kan vist lige så godt være et problem med modtager programmet som
med afsender delen...
Har haft Outlook 2007 (dansk version) installeret - og den nægtede
konsekvent at tale dansk, eller bruge de tegnsæt jeg satte den til, for
visse modtagere.
Løsningen for mig var, at smide Outlook ud og installere Thunderbird.
Så gik alting, ikke bare som det skulle - også både nemmere og
hurtigere.
For mig ser det ud somom, der sendes i utf-8. Så hvis man
utf8_encode()'r body og subjectet, skulle det vel kunne løse problemet.
Man skal så nok også sende det som utf-8 :
Content-Type: text/plain; charset=utf-8
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk
| |
Dan Storm (27-08-2009)
| Kommentar Fra : Dan Storm |
Dato : 27-08-09 16:43 |
|
Birger Sørensen skrev:
> For mig ser det ud somom, der sendes i utf-8. Så hvis man
> utf8_encode()'r body og subjectet, skulle det vel kunne løse problemet.
Det er egentlig omvendt - det skal decodes, idet modtageren modtager det
som allerede er utf-8 encoded.
> Man skal så nok også sende det som utf-8 :
> Content-Type: text/plain; charset=utf-8
Det vil ikke nødvendigvis løse noget når det ikke er en MIME email.
--
Dan Storm - storm at err0r dot dk / http://err0r.dk
People who claim they don't let little things bother
them have never slept in a room with a single mosquito.
| |
Birger Sørensen (27-08-2009)
| Kommentar Fra : Birger Sørensen |
Dato : 27-08-09 18:45 |
|
Dan Storm sendte dette med sin computer:
> Birger Sørensen skrev:
>> For mig ser det ud somom, der sendes i utf-8. Så hvis man utf8_encode()'r
>> body og subjectet, skulle det vel kunne løse problemet.
>
> Det er egentlig omvendt - det skal decodes, idet modtageren modtager det som
> allerede er utf-8 encoded.
>
>> Man skal så nok også sende det som utf-8 :
>> Content-Type: text/plain; charset=utf-8
>
> Det vil ikke nødvendigvis løse noget når det ikke er en MIME email.
Havde ikke tænkt på at det kunne allerede være utf-8...
Siden med formen er utf-8.
(28 fejl, ingen doctype) og en gang ... suppe. Har opgivet at finde
<form> tagget.
Men hvis det ikke sættes til andet, har Dan selvfølgelig ret i at data
sendes utf-8 encodede.
For at sende ISO, må man så skulle utf8_decode modtagne data, f.eks.
$subj = utf8_decode( (string)$_POST[...]);
og tilsvarende for andre data.
Desuden antage at resten af processsen, ikke ændrer noget (sendmail på
den aktuelle server, hvis der anvendes php's mail())).
Jeg har nok ikke nok forstand på det med headere. Men kan da ikke se
andet, end at det kan ikke skade, at fortælle hvilket karaktersæt der
anvendes - enten det nu bliver brugt til noget eller ej...
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk
| |
Jakob Bohm (28-08-2009)
| Kommentar Fra : Jakob Bohm |
Dato : 28-08-09 20:08 |
|
Kim Ludvigsen wrote:
> Michael Jensen skrev:
>
>> Det grundlæggende i scriptet virker fint nok, men hvis man bruger
>> æøå i kontakt formularen på hjemmesiden, bliver de til nogle
>> mytiske tegn i den mail der genereres af PHP scriptet.
>
> Vi er ved at prøve at løse problemet i mit forum:
> http://kimludvigsen.dk/phpbb3/viewtopic.php?f=2&t=6824662
>
> Problemet må være i tegnsætsangivelsen, men det gør tilsyneladende ingen
> forskel at indsætte en header-linje med tegnsætsangivelse i scriptet. I
> hvert fald ikke mht. emnelinjen.
>
Tegnsæt i mails angives på to forskellige måder i header og body.
I body angives tegnsættet som en del af mime-type, f.eks.
Content-Type: text/plain; charset="utf-8"
Husk også at bruge Quoted-Printable så selve mailtransmissionen holder
sig indenfor 7 bit.
I headers som f.eks. "Subject:" bruges metoden defineret i RFC2047, hvor
tegnsættet angives for et eller flere ord ad gangen, f.eks.
Subject: =?utf-8?Q?Re:_=C3=A6=C3=B8=C3=A5_ser_underlige_ud_i_mail?=
Subject: Re: =?utf-8?Q?=C3=A6=C3=B8=C3=A5_ser_underlige_ud_i?= mail
Subject: Re: =?iso-8859-1?Q?=E6=F8=E5?= ser underlige ud i mail
Subject: Re: =?iso-8859-1?B?5vjl?= ser underlige ud i mail
Alle ovenstående vises i mailprogrammer som
Emne Re: æøå ser underlige ud i mail
| |
Bertel Lund Hansen (28-08-2009)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 28-08-09 23:49 |
|
Jakob Bohm skrev:
> Husk også at bruge Quoted-Printable så selve mailtransmissionen holder
> sig indenfor 7 bit.
Hvorfor kommer folk med det forældede råd stadigvæk? Jeg har i
min internettid aldrig mimekodet mails - ja okay, måske gjorde
Netscape Navigator 3.0 det uden mit vidende, men det er så også
alt.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Jakob Bohm (29-08-2009)
| Kommentar Fra : Jakob Bohm |
Dato : 29-08-09 21:46 |
|
Bertel Lund Hansen wrote:
> Jakob Bohm skrev:
>
>> Husk også at bruge Quoted-Printable så selve mailtransmissionen holder
>> sig indenfor 7 bit.
>
> Hvorfor kommer folk med det forældede råd stadigvæk? Jeg har i
> min internettid aldrig mimekodet mails - ja okay, måske gjorde
> Netscape Navigator 3.0 det uden mit vidende, men det er så også
> alt.
>
Fordi 8bit mails formelt set kun kan behandles af de mailservere som
udtrykkeligt siger at de understøtter det.
Hvis alle mail fra dit script sendes til den samme ene mailadresse fra
den samme ene webserver går den nok altid gennem eksakt de samme
mailservere, som du kan kontrollere er 8bit kompatible.
Men hvis dit script skal være universelt eller sende mails til fremmede
er der (i det mindste teoretisk) en risiko for at en eller anden crappy
mailserver undervejs misbehandler 8bit mails, f.eks. ved at lave
forkerte tegnsætkonverteringer uden at checke hvad der står i header.
| |
Bertel Lund Hansen (29-08-2009)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 29-08-09 22:40 |
|
Jakob Bohm skrev:
> Men hvis dit script skal være universelt eller sende mails til fremmede
> er der (i det mindste teoretisk) en risiko for at en eller anden crappy
> mailserver undervejs misbehandler 8bit mails, f.eks. ved at lave
> forkerte tegnsætkonverteringer uden at checke hvad der står i header.
Pudsigt nok fik jeg for første gang i mit internetliv problemer
med ukodet subject. Det skyldtes imidlertid ikke (nødvendigvis)
mishandling undervejs, men at modtagersystemet valgte at mærke
mailen som spam udelukkende på grund af at subject ikke var
MIME-kodet.
Lidt fjoget efter min mening.
I øvrigt er jeg 'vokset op' med mystiske tegn i stedet for æ, ø
og å, så jeg ved af erfaring at verden ikke falder sammen selv om
de tegn ser sære ud.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
|
|