Gå til innhold

Problem med ÆØÅ i mail()...


Anbefalte innlegg

Takk igjen for tiden din.

 

Jeg skal prøve dette senere, men jeg tror problemet ligger hos webhosten min.

Prøvde å lagre i notepad da jeg holdt på med dette sist gang, men likevel forsvinner bokstavene.

ÆØÅ funker fint i selve websiden, men det er i mailene ting forsvinner.

 

Tror jeg skal sende en mail til support om jeg ikke fikser det i løpet av kvelden.

 

Takk igjen :)

Lenke til kommentar
Videoannonse
Annonse

Når filen ikke er lagret i utf-8 så må du ikke bruke utf8_decode.

Prøv å fjern utf8_decode fra linjene under.

Jeg skriver i DW cs4, og har satt dokumentet til "western europe"-encoding. (Det stod på unicode(utf-8) før.

 

$mail_text = utf8_decode($mail_text);

$mail_subject = utf8_decode($mail_subject);

Lenke til kommentar

Ok, her er status:

Alle .php-filer, server, php.ini, mysql, setlocale() og alt som kan tenkes er satt til UTF-8 og fungerer med ÆØÅ.

 

Unntatt den forbaska mail()-funksjonen, hvor headers og subject ikke klarer å takle ÆØÅ. Når jeg accesser webmailen, så ser jeg at ÆØÅ blir slike rare bokstaver med "ekstrategn" på, som typisk er når noe blir forsøkt vist i et annet tegnsett enn angitt.

 

I mailprogrammet mitt, thunderbird, er disse bokstavene rett og slett bare tattbort, derav "kjre Ola".

 

Headers er satt til utf8. Både subject og headers har blitt forsøkt i utf8_encode og decode, med samme resultat.

 

 

 

Her er koden

$headers  = "MIME-Version: 1.0" . "\r\n";  
		$headers .= "Content-type:text/html;charset=utf-8" . "\n";  
		$headers .= "Reply-To:No-Reply <[email protected]>\n";  
		$headers .= 'From: Føniks Finest <[email protected]>'. "\n";  
		$headers .= 'Return-Path:return@bluescape,org'."\n";
		$mail_newpass = newpass();
		$kontakt_array = mysql_fetch_array($result);
		$mail_firstname = $kontakt_array[firstname];
		$mail_firstname = ucfirst($mail_firstname);
		$mail_naknr = $kontakt_array[naknr];
		$mail_email = $kontakt_array[email];
		$mail_text = "Hei!<br/><br/>Det nye passordet ditt til den superkule føniks-siden er:<br/>=====<br/>$mail_newpass<br/>==== <br/>Du kan heldigvis endre det du har logget inn <3 <br/><br/>Ha en fin dag, $mail_firstname";
		$mail_subject = "-ÆØÅ-Nytt passord, $mail_firstname!";
		$mail_subject = utf8_encode($mail_subject);
		$updatepass = mysql_query("UPDATE `foniks_members` SET `password` = '$mail_newpass' WHERE `naknr` = '$mail_naknr'") or die("<p class=\"error\">MySQL-feil: " . mysql_error() . "</p>");
		if (mail($mail_email,$mail_subject,$mail_text, $headers) && $updatepass)

Lenke til kommentar

Jeg må nesten bare spørre .. Er det noen spesiell grunn til at du ønsker å bryke UTF-8?

 

Gutta bak PHP hadde ikke multibyte i tankene da de laget språket og støtten for det er derfor svært dårlig. Skulle ikke forundre om mail() rett og slett ikke støttet UTF-8. Med mindre du virkelig trenger de uendelige antall tegnene MB tilbyr, hvorfor da bruke det? iso-8859-1 støtter da vitterlig Æ, Ø og Å og hadde du holdt deg til det tegnesettet fra begynnelsen, så hadde du aldri møtt på noen problemer.

Lenke til kommentar
Jeg må nesten bare spørre .. Er det noen spesiell grunn til at du ønsker å bryke UTF-8?

 

Gutta bak PHP hadde ikke multibyte i tankene da de laget språket og støtten for det er derfor svært dårlig. Skulle ikke forundre om mail() rett og slett ikke støttet UTF-8. Med mindre du virkelig trenger de uendelige antall tegnene MB tilbyr, hvorfor da bruke det? iso-8859-1 støtter da vitterlig Æ, Ø og Å og hadde du holdt deg til det tegnesettet fra begynnelsen, så hadde du aldri møtt på noen problemer.

 

 

Jeg begynte som sagt med iso, men etterhvert som jeg feilsøkte og besøkte flere og flere nettsider og irc-kanaler fikk jeg inntrykk av at det var UTF-8 som var "the shit".

Den støtter alt, og det er den som har kommet for å bli.

 

Det er iallefall slik jeg oppfatter det.

At mail() ikke skal støtte utf8 virker nesten urealistisk, men jeg kan jo google litt og se hva jeg finner ut :)

Lenke til kommentar
Ok, her er status:

Alle .php-filer, server, php.ini, mysql, setlocale() og alt som kan tenkes er satt til UTF-8 og fungerer med ÆØÅ.

 

Unntatt den forbaska mail()-funksjonen, hvor headers og subject ikke klarer å takle ÆØÅ. Når jeg accesser webmailen, så ser jeg at ÆØÅ blir slike rare bokstaver med "ekstrategn" på, som typisk er når noe blir forsøkt vist i et annet tegnsett enn angitt.

 

I mailprogrammet mitt, thunderbird, er disse bokstavene rett og slett bare tattbort, derav "kjre Ola".

 

Headers er satt til utf8. Både subject og headers har blitt forsøkt i utf8_encode og decode, med samme resultat.

 

 

 

Her er koden

$headers  = "MIME-Version: 1.0" . "\r\n";  
		$headers .= "Content-type:text/html;charset=utf-8" . "\n";  
		$headers .= "Reply-To:No-Reply <[email protected]>\n";  
		$headers .= 'From: Føniks Finest <[email protected]>'. "\n";  
		$headers .= 'Return-Path:return@bluescape,org'."\n";
		$mail_newpass = newpass();
		$kontakt_array = mysql_fetch_array($result);
		$mail_firstname = $kontakt_array[firstname];
		$mail_firstname = ucfirst($mail_firstname);
		$mail_naknr = $kontakt_array[naknr];
		$mail_email = $kontakt_array[email];
		$mail_text = "Hei!<br/><br/>Det nye passordet ditt til den superkule føniks-siden er:<br/>=====<br/>$mail_newpass<br/>==== <br/>Du kan heldigvis endre det du har logget inn <3 <br/><br/>Ha en fin dag, $mail_firstname";
		$mail_subject = "-ÆØÅ-Nytt passord, $mail_firstname!";
		$mail_subject = utf8_encode($mail_subject);
		$updatepass = mysql_query("UPDATE `foniks_members` SET `password` = '$mail_newpass' WHERE `naknr` = '$mail_naknr'") or die("<p class=\"error\">MySQL-feil: " . mysql_error() . "</p>");
		if (mail($mail_email,$mail_subject,$mail_text, $headers) && $updatepass)

 

Hmm. Det er mulig du allerede har forsøkt dette, men bare for å være på den sikre siden.

 

1. Lagre php-dokumentet i utf-8.

2. Send headere fra php-dokumentet om at dette er skrevet i utf-8.

3. Angi utf-8 som tegnsett i meta på dokumentet som skrives ut. Dette sikrer deg at du får inn det riktige tegnsettet fra skjema som blir utfylt av bruker.

4. Forsikre deg om at tegnene du har i dokumentet faktisk er de du vil sende. Dreamweaver har en tendens til å knote med dette. Jeg har kastet bort mange timer selv på akkurat dette, og endte (som sagt) opp med å heller kaste dreamweaver. :!:

5. Benytter du dette oppsettet, bør du bruke utf8_decode() når du benytter mail(), med headere i mailen om at dette skal mottas som iso-8859-1 format.

 

Jeg benytter dette som standard via en av Webdeal´s servere og har også benyttet dette hos blant annet web10, webhuset og One. Jeg har selv ikke opplevd noen problemer angående dette etter at jeg begynte å benytte dette oppsettet. :D

Endret av funkyboy
Lenke til kommentar

Ut ifra denne tråden å bedømme, virker ikke UTF-8 som teh shit, bare shit. Men for all del - bruk i vei. MB encoding er absolutt kommet for å bli og støtten er blitt vesentlig bedre i de senere versjonene av PHP.

 

Edit: Funkyboy, dersom du spesifiserer at mailen skal mottas og leses som iso-8859-1, så er hele poenget med å bruke UTF8 borte.

Endret av Jonas
Lenke til kommentar
Hmm. Det er mulig du allerede har forsøkt dette, men bare for å være på den sikre siden.

 

1. Lagre php-dokumentet i utf-8.

2. Send headere fra php-dokumentet om at dette er skrevet i utf-8.

3. Angi utf-8 som tegnsett i meta på dokumentet som skrives ut. Dette sikrer deg at du får inn det riktige tegnsettet fra skjema som blir utfylt av bruker.

4. Forsikre deg om at tegnene du har i dokumentet faktisk er de du vil sende. Dreamweaver har en tendens til å knote med dette. Jeg har kastet bort mange timer selv på akkurat dette, og endte (som sagt) opp med å heller kaste dreamweaver. :!:

5. Benytter du dette oppsettet, bør du bruke utf8_decode() når du benytter mail(), med headere i mailen om at dette skal mottas som iso-8859-1 format.

 

Jeg benytter dette som standard via en av Webdeal´s servere og har også benyttet dette hos blant annet web10, webhuset og One. Jeg har selv ikke opplevd noen problemer angående dette etter at jeg begynte å benytte dette oppsettet. :D

Alt er utført.

Men ja, jeg knotet lenge med DW og charset selv. Spesielt siden konverteringen ikke fungerte. Man måtte lage en ny fil og copy/paste innholdet.

 

Bruker web10 selv, så da er det vel håp :)

Men jeg har virkelig prøvd utf8_decode($headers) og på $subject, uten hell.

 

 

 

 

 

Ut ifra denne tråden å bedømme, virker ikke UTF-8 som teh shit, bare shit. Men for all del - bruk i vei. MB encoding er absolutt kommet for å bli og støtten er blitt vesentlig bedre i de senere versjonene av PHP.

 

Jajo, ser poenget ditt.

PHP6 skal visst støtte MB i langt større grad enn nå, så vi får bare holde ut, hva?

 

 

 

Fant forresten denne linken, så jeg får prøve denne og se hva som skjer:

http://bitprison.net/php_mail_utf-8_subject_and_message

Lenke til kommentar
Edit: Funkyboy, dersom du spesifiserer at mailen skal mottas og leses som iso-8859-1, så er hele poenget med å bruke UTF8 borte.

 

Ja, det er forsåvidt sant. :D Har dårlige erfaringer med å sende mail som utf-8 selv, men foretrekker det helt klart ellers, da det er det mest fullstendige og kompatible tegnsettet for både serverside kode og html-output. Benyttes utf8_decode og man sender mail som iso-8859-1, har som sagt ikke jeg brukt å fått noen problemer. Så det var egentlig veldig rart det ikke gikk også her.

 

Til trådstarter; Kult om du oppdaterer oss om du får det til, og hva feilen kom av. :D

Endret av funkyboy
Lenke til kommentar
edit: helvete faen.

det var virusscanprogrammet som fucket headerne.

 

AVG-dritt.

 

.. da funket det tilslutt likevel? :!:

 

 

Det har sikkert funket helt fra begynnelsen av.

Forbanna amatørmessig av AVG å endre headere.

Fra: text/html;charset=UTF-8

Til: multipart/mixed; boundary="=======AVGMAIL-493548CA0000======="

 

 

Men takk for alle svarene dine her inne, jeg har lært mye av de uansett :)

Lenke til kommentar

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å
×
×
  • Opprett ny...