Euro teken in email onderwerp wilt niet lukken
Ik gebruik swiftmailer om een mail te versturen met in het onderwerp een euro teken. Helaas krijg ik nooit het europteken te zien, wel een vraagteken.. hoe los ik dit op?
Dit is mijn code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
require_once './includes/swift-mailer/lib/swift_required.php';
$transport = Swift_MailTransport::newInstance();
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
Swift_Preferences::getInstance()->setCharset('utf-8');
// Create a message
$message = Swift_Message::newInstance();
$template = 'test';
$message->setContentType('text/plain; charset=UTF-8');
$message->setBody($template, 'text/html');
$message->setSubject('test €150! - €150,00 - ');
$message->setFrom(array('email', 'naam'));
$message->setTo(array('email' => 'naam'));
if($mailer->send($message))
{
echo 'Verzonden';
}
?>
require_once './includes/swift-mailer/lib/swift_required.php';
$transport = Swift_MailTransport::newInstance();
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
Swift_Preferences::getInstance()->setCharset('utf-8');
// Create a message
$message = Swift_Message::newInstance();
$template = 'test';
$message->setContentType('text/plain; charset=UTF-8');
$message->setBody($template, 'text/html');
$message->setSubject('test €150! - €150,00 - ');
$message->setFrom(array('email', 'naam'));
$message->setTo(array('email' => 'naam'));
if($mailer->send($message))
{
echo 'Verzonden';
}
?>
En zorg ervoor dat je PHP-script ook met UTF-8 encoding is opgeslagen. Als dit niet is, dan heb je inderdaad kans dat je vraagtekens zal zien.
$template zou ook de opbouw van een kloppend HTML-document moeten volgen, met overeenkomende meta-headers.
Waarschijnlijk is het bestand waarin het euro-teken staat in een andere encoding opgeslagen inderdaad.
Wat je ook zou kunnen proberen is de titel base64-encoden:
En als dat niet werkt zou je kunnen proberen $subject alsnog UTF-8 te encoden, maar het zou natuurlijk beter zijn als dit al het geval was:
Dit werkt natuurlijk alleen als SwiftMailer verder onder water geen vertalingen uitvoert, dus dat zul je verder zelf uit moeten pluizen.
Daarnaast zou je kunnen overwegen (of simpelweg kunnen testen) hoe dit soort topics je spamrating beïnvloeden. Je zou natuurlijk altijd gewoon een simpel alternatief kunnen gebruiken, zoals het simpelweg uitschrijven van de tekst "150 euro" of wat dan ook...
Thomas van den Heuvel op 19/05/2017 15:45:47:
Wat heeft een header() te maken met de titel in een e-mailbericht?
Niks, maar het is toch iets waarbij je UTF-8 afdwingt bij het openen van een webpagina.
Ik zou het altijd aanraden.