Gå til innhold

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


Anbefalte innlegg

Hei!

 

Jeg får ikke ÆØÅ til å virke i mail(). På mailen som folkene mottar så er ÆØÅ erstattet med rare tegn.. Slik er er koden:

 

mail($config_email,"emne",$melding,$headers)

 

$headers ser slik ut:

$headers="Content-Type: text/html; charset=iso-8859-1";

 

Noen som vet hva som er feil? jeg tror charset osv skal stemme, men det funker ikke fordi..

 

På forhånd takk for svar...

Endret av 0lav
Lenke til kommentar
Videoannonse
Annonse

Replacer ingen tegn, charesettet på fila er <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">. Har desverre ingen url...

 

$headers ser slik ut nå:

$headers="Content-Type: text/html; charset=UTF-8";

 

Er ikke sikker på språket på serveren.. Hvordan finner jeg ut det? ÆØÅ funker i alle andre sammenhenger da..

Lenke til kommentar

Dersom meta-taggen i dokumentet seier ISO-8859-1 har det lite å sei kva defaultcharset er i Apache.

 

Anbefalar at du sender ein mail til deg sjølv, utan å setje header. Bruk Thunderbird som klient, og les mailen. I instilligane til thunderbird kan du velje kva for tegnsett den skal lese om det ikkje er definert. På den måten finn du ut kva som er rett, i alle fall.

Lenke til kommentar
  • 3 år senere...
Hos meg forsvinner æøå.

Mail-subjects blir f.eks "Hei kjre Ola".

 

Hvor skal jeg fortelle hva at et annet tegnsett skal brukes?

 

Prøv noe slikt (funker utmerket dersom dokumentet ditt er lagret i utf-8);

 

		$heading = "From: En eller annen nettside <[email protected]>\nContent-Type: text/html; charset=iso-8859-1";
	$yourEmail = "[email protected]";
	$subject = utf8_decode("Subject bestemmer du her");
	$message = <<<EOF

<html><body bgcolor='#ffffff'>
<p>En eller annen beskjed; ÆæØøÅå.</p>
</body></html>

EOF;

	$message = utf8_decode($message);
	mail($yourEmail,$subject,$message,$heading);

Lenke til kommentar

Hei funkyboy.

 

Takk for godt forslag, og litt ny lærdom:)

 

Dessverre er det fremdeles ingen æ, ø eller å med i subject eller tekst i mailene.

 

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

 

Så, jeg vet ikke hva som er problemet jeg?

Her er iallefall de relevante delene av scriptet:

 

Pastebin: http://pastebin.com/d2d771c54

 

if(isset($_POST['action']) && $_POST["action"] == "nylogin"){
	$p_nykontakt = escapeInput($_POST['nykontakt']);
	$p_nykontakt= mysql_real_escape_string($p_nykontakt);
	$result = mysql_query("SELECT * FROM foniks_members WHERE naknr='$p_nykontakt' OR email='$p_nykontakt' LIMIT 1")or die("<p class=\"error\">MySQL-feil: " . mysql_error() . "</p>");
	if(mysql_num_rows($result) == 1){
		$mail_heading = "From: Føniks Finest <[email protected]>\nContent-Type: text/html; charset=iso-8859-1";
		$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 = "Det nye passordet ditt til den superkule føniks-siden er $newpass. \nDet kan heldigvis endres når du har logget inn <3 \nHa en fin dag, $mail_firstname";
		$mail_text = utf8_decode($mail_text);
		$mail_subject = "Nytt passord, kjære $mail_firstname!";
		$mail_subject = utf8_decode($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, $mail_heading)) {
			echo "<p class=\"info\">Hei $mail_firstname !<br/> Dette gikk som smurt. Mailen med det nye passordet ditt er sendt, og databasen er faktisk oppdatert :)</p>";
		}
		else echo "<p class=\"error\">Mailen ble ikke sendt. Jeg er kjempelei meg:/</p>";
	}
	else {
		echo "<p class=\"error\">Jeg fant ikke hverken NAK-nummer eller passord jeg... :(</p>";
		login();
	}
}

Endret av Twinflower
Lenke til kommentar
Prøvd medfølgende helt i starten av php-scriptet/ siden som lastes?

 

header ('Content-type: text/html; charset=utf-8');

 

 

var det ikke utf-8 vi ikke ville ha?

(men ok, prøver nå)

 

 

edit: utf-8 gav meg en shitload med spørsmålstegn for æøå.

Endret til iso-8859-1, og æøå kom tilbake.

 

Men mailene er fremdeles totalt uten. "kjre ola"

Endret av Twinflower
Lenke til kommentar
var det ikke utf-8 vi ikke ville ha?

 

I utgangspunktet, ja. Men når man benytter utf8_decode() noe, bør jo data helst være i utf-8 i utgangspunktet for at det skal være noen vits. Jeg vet sant og si ikke hva som er galt her, da jeg ikke har for mye snøring på apache og serveroppsett. Ville eventuelt testet å lagret via en annen teksteditor, da jeg opplevde lignende problemer med Dreamweaver selv for noen år siden (noe som var en av grunnene til at jeg sluttet å bruke den). Men siden du nå sender mail som html (Content-Type: text/html), kan du jo også tillate html/ evt. ascii her inntil videre (dette er dog noe tungvint). Du kan dermed risikere å måtte bruke noe ala dette;

 

Function LagMailkompatibelHtml($content) {
$content = htmlspecialchars($content);
$content = str_replace("æ", "æ", $content);
$content = str_replace("Æ", "&Aelig;", $content);
$content = str_replace("ø", "ø", $content);
$content = str_replace("Ø", "Ø", $content);
$content = str_replace("å", "å", $content);
$content = str_replace("Å", "Å", $content);
}

$html = <<<EOF

<html><body bgcolor='#ffffff'>
<p>En eller annen beskjed; ÆæØøÅå.</p>
</body></html>

EOF;

$html = utf8_decode(LagMailkompatibelHtml($html));

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...