Mailheaders og specielle tegn
Hej, jeg roder lidt med mail-funktionaliteten i PHP. Jeg har bygget en klasse op, der kan sende multipart-mails, med boundary-strenge osv, men jeg undrer mig lidt over hvordan den opfører sig og viser tegn som æ, ø og å.Jeg troede det var nok at sætte denne header Content-Type: text/html; charset="utf-8", når den data jeg hev ud fra db var netop UTF-8 format, og resten af teksten var hard-coded.
Men jeg var nødt til at sætte en klassisk html-header på også, som denne <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head><meta http-equiv="Content-Type" content="text/html; UTF-8" /></head>. Det overrasker mig naturligvis ikke med doctype osv. men mere at det skal "forklares" to gange til serveren at det er UTF-8 encoded data der sendes med i mailen.
Det sjove er, at tegn som bliver hardcoded, såvel æ, ø som å, vises korrekt i mailen, mens data der trækkes ud fra db'en, skal wrappes ind i htmlentities() med standard charset, altså ISO-8859-1, før de vises korrekt, på trods af at der altså er angivet UTF-8 to stedet i mailen.
Mail opbygningen ser således ud:
This is a multi-part message in MIME format. --==Multipart_Boundary_x002d71ae34b437bb29c76adee341e700x Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit
<Plain Text>
--==Multipart_Boundary_x002d71ae34b437bb29c76adee341e700x Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 7bit
<HTML'en>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head><meta http-equiv="Content-Type" content="text/html; UTF-8" /></head><body>
text osv
</body>
--==Multipart_Boundary_x002d71ae34b437bb29c76adee341e700x--
<br />Headers: Date: Tue, 3 Mar 2009 17:29:40 +0100
From: Navn<mail@domain.dk>
Headers: Date: Tue, 3 Mar 2009 17:29:40 +0100
From: <FRA>
MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="==Multipart_Boundary_x002d71ae34b437bb29c76adee341e700x"
Kan nogen forklare mig, hvorfor i alverden det skal være sådan, og hvad der kan laves anderledes med henblik på f.eks. optimering?
