PHP Mail, åäö och olika mailklienter

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Boden
  • 2012-06-07 15:10

Hej. Har jobbat i timmar för att få ÅÄÖ att funka i mail på företagets datorer.

Nu har jag äntligen lyckats, men då blir det istället fel på min dator. Jag kör Mac (vanliga mail appen) och företaget kör Outlook på Windows maskiner.

Vad jag har förstått så använder man UTF-8 för att avkoda ÅÄÖ. Jag har angett UTF-8 i headern, borde det inte bli rätt i både Outlook och OSX Mail?

I meddelandet visas åäö som det ska på båda maskinerna, men rubriken blir "PrisförfrÃ¥gan" i OSX Mail.

Här är koden:

<?php

//RÄKNA ANTALET OBESVARADE ÄRENDEN
$query = "SELECT * FROM service WHERE behandlad = 'nej'";
mysql_query('SET NAMES utf8;');
$result = mysql_query($query) or die(mysql_error());
$obesvarade = mysql_num_rows($result);
$obesvarade = $obesvarade+1;

$subject = "Prisförfrågan ";
$meddelande = "Det finns " . $obesvarade . " obehandlade ärenden!";

//SKICKA MAIL
	$headers  = "MIME-Version: 1.0\r\n";
	$headers .= "Content-type: text/html; charset=UTF-8\r\n";
	$headers .= "From: avsandare@mail.se\r\n";
	
	$to = "mottagaren@mail.se";

	mail($to, $subject, $meddelande, $headers);
?>

$headers .= "Content-type: text/html; charset=UTF-8\r\n";

... detta gör väl att mailet som skickas är i UTF-8 format?

Vad beror det på att åäö visas olika på de olika mailklienterna, och varför funkar det i $meddelande men inte i $subject?

Väldigt tacksam om någon ville göra mig lite klokare här

Du har ställt in UTF-8 i header men använder du samma teckenuppsättning när skriver?

  • Medlem
  • Stockholm
  • 2012-06-07 15:42

Kanske lägga till en rad som konverterar till utf-8?

$subject = "Prisförfrågan ";
$subject = utf8_decode($subject);

Eller om det går:

$subject = utf8_decode("Prisförfrågan ");

Rubriken i mejlet måste dessutom mime-kodas – content-type som du sätter gäller endast mejlets innehåll, ämnesraden är inte en del av innehållet. Du använder PHP: mb_encode_mimeheader - Manual för att göra det, exvis:

$subject = mb_encode_mimeheader($YOUR_SUBJECT_HERE, 'UTF-8', 'B');

1
Bevaka tråden