van iso-8859-1 naar UTF-8 wilt niet werken
Mijn eerste bericht op dit forum..
Ik beheer voor een Franse club een website en heb onlangs de php versie 5.2 geupdate naar versie 5.6.
Via de website wordt een email verstuurd.
$headers = array();
$headers [] = 'MIME-Version: 1.0';
$headers [] = "Content-type: text/plain; charset= ISO-8859-1";
$headers [] = "From: ".$var_name." ".$var_firstname." <".$var_email."> \r\n";
Sinds de update werkt deze charset niet meer. Ik zal moeten wijzigen naar charset=UTF-8 ( Franse karakters )
Gmail gaat goed maar op eigen outlook client krijg ik de foutmelding dat de 'FROM' verkeerde karakters heeft.
De namen komen uit een database met de charset ingesteld op utf8-unicode_ci.
Ik ben al enige tijd aan het zoeken op het net maar kan geen oplossing vinden. Heb ook al geprobeerd met htmlentities and htmlspecialchars.
Het onderwerp van de email komt uit een html formulier en geeft dezelfde foutmelding.
Daarnaast wordt de berichtekst keurig weergegeven.
Ik vermoed een header probleem...
Kan iemand mij helpen ?
René
overweeg het gebruik van PHPMailer of Swiftmailer. Dat soort classes heeft dit soort problemen al uitgebreid bekeken en opgelost. Dan hoef je niet zelf alle wielen opnieuw uit te vinden.
Dank je wel..Ik ga dat eens uitzoeken
PhPMailer werkt voor wat betreft de speciale karakters prima.
Echter nu heb ik het probleem van de returns/linebreaks omdat PhPMailer de mails in html verstuurd en niet in plain text.
Zal anders een nieuw topic aanmaken.
nl2br()
Zie Laat anders even zien hoe je phpmailer regels eruit zien
Code (php)
Toevoeging op 10/10/2014 08:40:07:
om accents te verwijderen zou je zoiets kunnen gebruiken:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
function replace_accents($string)
{
return str_replace( array('à','á','â','ã','ä', 'ç', 'è','é','ê','ë', 'ì','í','î','ï', 'ñ', 'ò','ó','ô','õ','ö', 'ù','ú','û','ü', 'ý','ÿ', 'À','Á','Â','Ã','Ä', 'Ç', 'È','É','Ê','Ë', 'Ì','Í','Î','Ï', 'Ñ', 'Ò','Ó','Ô','Õ','Ö', 'Ù','Ú','Û','Ü', 'Ý'), array('a','a','a','a','a', 'c', 'e','e','e','e', 'i','i','i','i', 'n', 'o','o','o','o','o', 'u','u','u','u', 'y','y', 'A','A','A','A','A', 'C', 'E','E','E','E', 'I','I','I','I', 'N', 'O','O','O','O','O', 'U','U','U','U', 'Y'), $string);
}
?>
function replace_accents($string)
{
return str_replace( array('à','á','â','ã','ä', 'ç', 'è','é','ê','ë', 'ì','í','î','ï', 'ñ', 'ò','ó','ô','õ','ö', 'ù','ú','û','ü', 'ý','ÿ', 'À','Á','Â','Ã','Ä', 'Ç', 'È','É','Ê','Ë', 'Ì','Í','Î','Ï', 'Ñ', 'Ò','Ó','Ô','Õ','Ö', 'Ù','Ú','Û','Ü', 'Ý'), array('a','a','a','a','a', 'c', 'e','e','e','e', 'i','i','i','i', 'n', 'o','o','o','o','o', 'u','u','u','u', 'y','y', 'A','A','A','A','A', 'C', 'E','E','E','E', 'I','I','I','I', 'N', 'O','O','O','O','O', 'U','U','U','U', 'Y'), $string);
}
?>
Zoals gezegd werken de speciale karakters prima met PHPMailer
Echter nu loop ik tegen het probleem aan dat de tekst in HTML worden verzonden en de ' returns' niet meeneemt
Heb inmiddels gevonden dat dit met PHPMAiler 'AltBody' is op te lossen.
Dit wil niet direct werken. Ben dit nog aan het uitzoeken/uitwerken.
Ik blijf steeds hangen op $mail->MsgHTML($message)..
In het from-veld kan ook een naam staan: from: frank <[email protected]>
Daarnaast kan zowel in de naam als in het mailadres een letter met 'accent' staan:
From: théo <theo@köln.de>
--
@rene
Ik denk dat je een te uitgebreid voorbeeld van phpmailer gebruikt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$m = new phpmailer()
$m->AddAdress('[email protected]');
$m->Subject = 'foobar';
$m->Body = 'gewoon plain text
Met enters
Bye';
$m->Send();
?>
$m = new phpmailer()
$m->AddAdress('[email protected]');
$m->Subject = 'foobar';
$m->Body = 'gewoon plain text
Met enters
Bye';
$m->Send();
?>
Toevoeging op 15/10/2014 01:08:19:
@frank
In het from-veld kan ook een naam staan: from: frank <[email protected]>
Daarnaast kan zowel in de naam als in het mailadres een letter met 'accent' staan:
From: théo <theo@köln.de>
--
@rene
Ik denk dat je een te uitgebreid voorbeeld van phpmailer gebruikt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$m = new phpmailer()
$m->AddAdress('[email protected]');
$m->Subject = 'foobar';
$m->Body = 'gewoon plain text
Met enters
Bye';
$m->Send();
?>
$m = new phpmailer()
$m->AddAdress('[email protected]');
$m->Subject = 'foobar';
$m->Body = 'gewoon plain text
Met enters
Bye';
$m->Send();
?>
Ivm vakantie een wat late reactie.
Uiteindelijk heb ik de mail aangepast naar een simpele versie (bedankt Frank, Ivo) en het werkt naar behoren.
All verwijzingen naar HTML weggelaten. (IsHtml)
Mail->SetFrom()
Mail->To()
Mail->Subject=''
Mail->Body =''
Mail->Send()
Werkt perfect..Merci
Merci