ugrás a tartalomhoz

PHP: "?" az ékezetes betűk helyett az outlook "küldő mezőjében"

hohlerzsolt · 2007. Feb. 8. (Cs), 16.36
Sziasztok!

Olyan problémám volna, hogy írtam egy php-s mailküldő scriptet. Probléma: ha outlookban tekintem meg a levelet, akkor a "feladó"/"from" mezőbe ha ékezetes karaktereket írok, akkor csupán "?" karakterek jelennek meg helyettük. Kérem aki tud segítsen! Mellékelem a scriptet:

<html>
<LINK REL="StyleSheet" TYPE="text/CSS" HREF="style.css" TITLE="betuk">
<head>
</script>
<title>A Rexmill Kft. hivatalos honlapja</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<meta name="keywords" content="">
</head>
....

<?php
$kinek = "ext-zsolt.hohler##kukac##nokia.com";
$mail = $_POST['Email'];
$Targy = $_POST['targya'];
$egy= $_POST['egya'];
$ketto= $_POST['kettoa'];
$harom= $_POST['haroma'];
$szovega = $_POST['Message'];
$szoveg = str_replace("\r", '<br />', $szovega);
$thanks = "
<p align='left'>
<br>
$szoveg
<br>
A levél el lett küldve az alábbi e-mail cím(ek)re: <br><b>$kinek<br>$mail.
<br>Amint tudunk, válaszolunk az Ön kérdésire<br></b></p>";
if($_POST['submitform'])
{
$Name = $_POST['Name'];
$Email = $_POST['Email'];
$Message = $_POST['Message'];
$require = $_POST['require'];
$dcheck = explode(",",$require);
while(list($check) = each($dcheck))
{
if(!$$dcheck[$check]) {
$error .= "Ön nem töltötte ki az alábbi mezõket: <b>$dcheck[$check]</b>.<br>";
}
}
if ((!ereg(".+\@.+\..+", $Email)) || (!ereg("^[a-zA-Z0-9_@.-]+$", $Email))){
$error .= "Hibás e-mail cím.<br>Az Ön által megadott e-mail cím <b>$Email</b> - nem helyes formátumú. Kérem adjon meg egy valós e-mail címet!";
}
if($error)
{
echo $error;
echo '<br><a href="#" onClick="history.go(-1)">Kérem próbálja meg újra.</a>';
}
else
{
$message = "
Név: $Name
E-mail: $Email
Tárgy: $Targy
Darabszám: $egy
Szállítási határidõ: $ketto
Szállítási cím: $harom

Üzenet: $Message

-----------------------------
";

$subject = "Árajánlat kérést küldött Önnek: $Name";
$subject2 = "Saját árajánlat küldése a Rexmill Kft-nek";

mail($kinek,"$subject","$message","From: $Name <$Email>");
mail($mail,"$subject2","$message","From: $Name <$Email>");
echo "$thanks";
}
 
1

Karakterkódolási probléma

w3net · 2007. Feb. 8. (Cs), 16.57
ajánlanám Unicode (UTF-8) használatát, és mail helyett az mb_send_mail funkciót.

PHP-ben igy kell beállitani a helyes karakterkódolást:
## SET CHARSET
#
	header("Content-Type: text/html; charset=UTF-8");

	// set internal encoding for mbstring
	mb_internal_encoding("UTF-8");
	mb_regex_encoding("UTF-8");

HTML-ben pedig:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
e-mail küldés:

function SendEmail($emailFrom, $emailTo, $subject, $message, $bHtmlContent, $emailReplyTo, $returnPath, $priority=3){
    $headers = '';

        if ($bHtmlContent){
            $headers .= "MIME-Version: 1.0\r\n";
            $headers .= "Content-type: text/html; charset=utf-8\r\n"; // Mime type
        }
        $headers .= "From: $emailFrom\r\n";
        $headers .= "X-Mailer: AKARMI\r\n";    // mailer
        $headers .= "X-Priority: $priority\r\n";    // 1 Urgent message, 3 Normal
        $headers .= "Return-Path: $returnPath\r\n";
        $headers .= "Reply-To: $emailReplyTo\r\n";

        // and now mail it
        $result = false;
        $result = mb_send_mail($emailTo, $subject, $message, $headers); 
        return $result;
   }

További olvasmány:
Karakterkódolási problémák kiküszöbölése