[php/mail] Mailtjes met buitenlandse chars sturen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Jace / TBL
  • Registratie: Augustus 2001
  • Laatst online: 23-03-2023
Ik wil met php mailtjes kunnen sturen naar klanten met hun naam erin. Nou hebben die namen soms buitenlandse karakters. Bijvoorbeeld Duiters met umlauts: ä, Hongaren met dit soort tekens: ă Ą ň ő ş en zelfs Japanners (あ え お).

Ik heb deze namen in php als utf-8 strings. Zonodig kan ik ze converteren naar alle gebruikelijke codepages, alleen weet ik nooit zeker welke codepage voor iemand het meest geschikt is (heb geen land ofzo waar ze vandaan komen, en dan nog zou er ook best iemand met een Japanse naam vanuit de VS kunnen mailen).

Hoe kan ik het beste die mailtjes sturen? Als text/plain utf-8, of als text/html utf-8 (dan moet ik ook de mail body omzetten naar html, nu is dat normale text). Of nog anders?

Ik heb zeg maar dit:
code:
1
2
3
4
5
6
7
8
9
$naam = "Hier kunnen buitenlandse tekens in voorkomen"; // utf-8

$body = "Dear ".$naam.",\n";
$body .= "Bla bla enzovoort";

$header = "From: mij@hier.com\n";
$header .= "Content-Type: text/plain; charset=utf-8";

mail( $to_address, $subject, $body , $header );

Nu gaat dit niet goed, omdat lang niet alle email clients die utf-8 plain text goed displayen, ook niet als er alleen tekens in staan die in de codepage van het betreffende systeem kunnen worden weergegeven.

Ik dacht eraan om die strings even te scannen, en als er geen unicode chars boven de 127 in zitten, dan gewoon zoals hierboven sturen (eventueel kan die content-type header er dan nog wel uit ook).

Hoe kan ik het beste mailen als er wel "enge" karakters in zitten?

Acties:
  • 0 Henk 'm!

  • Jace / TBL
  • Registratie: Augustus 2001
  • Laatst online: 23-03-2023
niemand? :'(

Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

JaceTBL schreef op 15 juni 2004 @ 12:45:
Ik dacht eraan om die strings even te scannen, en als er geen unicode chars boven de 127 in zitten, dan gewoon zoals hierboven sturen (eventueel kan die content-type header er dan nog wel uit ook).

Hoe kan ik het beste mailen als er wel "enge" karakters in zitten?
Ik zou zeggen: probeer het gros eens te versturen als iso-8859-1 (standaard roman languages) Die wordt door de meeste email clients wel herkend en daar passen de meeste characters wel in. Helaas zal je dan wel bepaalde characters van bepaalde talen missen (zoals Tjechisch en Hongaars), maar iig is het wel enigzins leesbaar.

Anders zou er natuurlijk de oplossing zijn een standaard tekst in de plaintext-boundary te zetten waarin een disclaimer staat dat het niet leesbaar zou kunnen zijn (met een link naar een webpage waar dat wel zo zou zijn bijvoorbeeld) yadiyada en dan een html-formatted boundary meesturen waarin het in unicode staat. Meeste html-enabled email clients zullen hopelijk wel utf-8 begrijpen.

Alternatief is natuurlijk een utf-8 parser schrijven die uitvindt binnen welke charactersets de tekst past, maar dat is wel een hoop werk. :|

[ Voor 4% gewijzigd door Banpei op 16-06-2004 11:52 ]

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

  • Jace / TBL
  • Registratie: Augustus 2001
  • Laatst online: 23-03-2023
Banpei schreef op 16 juni 2004 @ 11:49:
Ik zou zeggen: probeer het gros eens te versturen als iso-8859-1 (standaard roman languages) Die wordt door de meeste email clients wel herkend en daar passen de meeste characters wel in. Helaas zal je dan wel bepaalde characters van bepaalde talen missen (zoals Tjechisch en Hongaars), maar iig is het wel enigzins leesbaar.
Nou tja de hele tekst is 100% engels, dus bevat alleen ascii chars (m.a.w. alleen tussen de U+0020 en U+007F). Enkel de namen van die lui kunnen bijvoorbeeld Hongaarse of Japanse karakters bevatten, en daarvan is het essentieel dat die correct aankomen. Het gaat om persoonlijke serial nr's die worden gemaild en alleen met die specifieke naam werken.
Anders zou er natuurlijk de oplossing zijn een standaard tekst in de plaintext-boundary te zetten waarin een disclaimer staat dat het niet leesbaar zou kunnen zijn (met een link naar een webpage waar dat wel zo zou zijn bijvoorbeeld) yadiyada en dan een html-formatted boundary meesturen waarin het in unicode staat. Meeste html-enabled email clients zullen hopelijk wel utf-8 begrijpen.
Ja inderdaad, html in utf-8 lijkt beter te gaan dan plain text in utf-8. Moet die text wel worden omgezet naar html, en hopen dat de meeste clients tegenwoordig wel html mail kunnen lezen (zijn er afaik een stuk meer dan degene die plain text utf-8 slikken)
Alternatief is natuurlijk een utf-8 parser schrijven die uitvindt binnen welke charactersets de tekst past, maar dat is wel een hoop werk. :|
Op zich geen probleem, ik verwacht vooralsnog voor onze doelgroep maar 3 verschillende encodings nodig te hebben: latin1 (iso8859-1) voor westerse talen, latin2 (iso8859-2) voor oost-europanen en japans (shift-jis of cp932) voor Japanners.

Ik heb de unicode mappings daarvan, en ik hoef enkel die naam daar heven doorheen te raggen, dus misschien is dat wel een goed idee!

(edit) makkelijker nog, ik doe gewoon een iconv van utf-8 naar zo'n codepage en weer terug, en als daar weer hetzelfde uitkomt is die codepage kennelijk geschikt :)

[ Voor 5% gewijzigd door Jace / TBL op 16-06-2004 14:58 ]