utf-8 mail php Griekse karakters

ik ben een formulier aan het maken op mijn site. Ik wil dat de klanten Griekse karakters kunnen schrijven en verzenden, maar in de mail krijg ik zoiets als ≥ÎμÏ∞Ï≥ ÎμÎ »Î» Î · ÎΠÎ'κΠ± istead van Griekse karakters. Ik heb geprobeerd de codering naar UTF-8 met deze code te wijzigen:

mail($recipient, $subject, '=?UTF-8?B?'.base64_encode($content).'?=');

Deze code werkt op een andere server die het getest heeft maar niet werkt op mijn server. Kan iemand helpen?


Hier is mijn volledige php-code

<?php
if ((isset($_POST['name'])) && (strlen(trim($_POST['name'])) > 0)) {
$name = stripslashes(strip_tags($_POST['name']));
 } else {$name = 'No name entered';
 }
if ((isset($_POST['lastname'])) && (strlen(trim($_POST['lastname'])) > 0)) {
$lastname = stripslashes(strip_tags($_POST['lastname']));
 } else {$lastname = 'No name entered';
 }
if ((isset($_POST['nomos'])) && (strlen(trim($_POST['nomos'])) > 0)) {
$nomos = stripslashes(strip_tags($_POST['nomos']));
 } else {$nomos = 'No name entered';
 }
if ((isset($_POST['polh'])) && (strlen(trim($_POST['polh'])) > 0)) {
$polh = stripslashes(strip_tags($_POST['polh']));
 } else {$polh = 'No name entered';
 }
if ((isset($_POST['address'])) && (strlen(trim($_POST['address'])) > 0)) {
$address = stripslashes(strip_tags($_POST['address']));
 } else {$address = 'No name entered';
 }
if ((isset($_POST['TK'])) && (strlen(trim($_POST['TK'])) > 0)) {
$TK = stripslashes(strip_tags($_POST['TK']));
 } else {$TK = 'No name entered';
 }
if ((isset($_POST['email'])) && (strlen(trim($_POST['email'])) > 0)) {
$email = stripslashes(strip_tags($_POST['email']));
 } else {$email = 'No email entered';
 }
if ((isset($_POST['phone'])) && (strlen(trim($_POST['phone'])) > 0)) {
$phone = stripslashes(strip_tags($_POST['phone']));
 } else {$phone = 'No phone entered';
 }
if ((isset($_POST['sxolia'])) && (strlen(trim($_POST['sxolia'])) > 0)) {
$sxolia = stripslashes(strip_tags($_POST['sxolia']));
 } else {$sxolia = 'Δεν υπάρχουν σχόλια';
 }

 ob_start();
 ?>
<html>
<head>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<table width="550" border="1" cellspacing="2" cellpadding="2">

<tr bgcolor="#eeffee">
 <td>Όνομα</td>
 <td><?=$name; ?></td>
</tr> 
<tr bgcolor="#eeffee">
 <td>Επίθετο</td>
 <td><?=$lastname; ?></td>
</tr>  
<tr bgcolor="#eeffee">
 <td>Νομός</td>
 <td><?=$nomos; ?></td>
</tr>
<tr bgcolor="#eeffee">
 <td>Πόλη</td>
 <td><?=$polh; ?></td>
</tr>
<tr bgcolor="#eeffee">
 <td>Διεύθυνση</td>
 <td><?=$address; ?></td>
</tr>
<tr bgcolor="#eeffee">
 <td>T.Κ</td>
 <td><?=$TK; ?></td>
</tr>

<tr bgcolor="#eeffee">
 <td>Τηλέφωνο</td>
 <td><?=$phone; ?></td>
</tr>

<tr bgcolor="#eeffee">
 <td>Email</td>
 <td><?=$email; ?></td>
</tr>

<tr bgcolor="#eeffee">
 <td>Σχόλια</td>
 <td><?=$sxolia; ?></td>
</tr>

</table>
</body>
</html>
<?
$body = ob_get_contents();

$to = '[email protected]';
$email = '[email protected]';
$fromaddress = "address";
$fromname = "Online Contact";

require ("phpmailer.php");

$mail = new PHPMailer();

$mail -> From = "address";
$mail -> FromName = "Book Order";

$mail -> AddAddress("[email protected]", "Name 5");

$mail -> WordWrap = 50;
$mail -> IsHTML(true);

$mail -> Subject = "Book Form:  Book form submitted";
$mail -> Body = $body;
$mail -> AltBody = "This is the text-only body";

if (!$mail -> Send()) {
$recipient = '[email protected]';
$subject = 'Contact form failed';
$content = $body;

    $header = 'Content-type: text/html; charset=UTF-8' . "\r\n";
    mail($recepient,$subject, '=?UTF-8?B?'.base64_encode($content).'?=', $header);


exit ;
  }
 ?>
2
Stuur de juiste headers! en probeer het opnieuw!
toegevoegd de auteur Eswar Rajesh Pinapala, de bron
controleer mijn antwoord ...
toegevoegd de auteur Eswar Rajesh Pinapala, de bron
hmm ok, maar hoe?
toegevoegd de auteur man_or_astroman, de bron

5 antwoord

De gecodeerde woord syntaxis wordt verwacht voor het onderwerp of andere veldwaarden voor de kop, maar niet voor de lichaam; daar kun je MIME en Inhoudstype gebruiken:

$headerFields = array('MIME-Version: 1.0', 'Content-Type: text/plain;charset=utf-8');
mail($recipient, '=?UTF-8?B?'.base64_encode($subject).'?=', $content, implode("\r\n", $headerFields));
3
toegevoegd

Ik vond een oplossing op internet na 8 uur met hetzelfde probleem ...

It worked for me (php, html form and mysql) =>

http://akrabat.com/php/utf8-php-and-mysql/

2
toegevoegd
Schrijf een echt antwoord en link niet alleen naar een externe website.
toegevoegd de auteur simeg, de bron

Probeer dit.

$header = 'Content-type: text/plain; charset=UTF-8' . "\r\n";
mail($recepient,$subject, '=?UTF-8?B?'.base64_encode($content).'?=', $header);

gebruik inhoudstype: tekst/html als u een html-e-mail verzendt.

0
toegevoegd
/* Set internal character encoding to UTF-8 */
mb_internal_encoding("UTF-8");

$headers  = 'MIME-Version: 1.1';
$headers .= 'Content-type: text/html; charset=utf-8';
$headers .= "From: $name <$email>";
$headers .= "Return-Path: $emailTo";
$headers .= "Reply-To: $email";
$headers .= "X-Mailer: PHP/". phpversion();
0
toegevoegd

Waar komt $ inhoud vandaan? Doe je iets als substr ($ content) dat geen multibyte- veilig , vóór verzending ()?

0
toegevoegd