Mail form doesn't send Russian/Cyrillic characters correctly?


Posted on 16th Feb 2014 07:03 pm by admin

When someone enters foreign characters (like Cyrillic text, and Japanese/Chinese probably gives the same problem) into the mail form, the email that arrives is all gibberish.

For example this should read "test message from *name*" in Russian.
Тестовое сообщение от Корин
Did you know?Explore Trending and Topic pages for more stories like this.

I tried changing the header content-type thing from plain text to HTML but that didn't fix it.

The script I'm using is one I found online for free (eternal thanks to its author some of the lines are in Dutch)

Does anyone know how to let the form accept foreign characters? Thanks a lot in advance !!

<?
$your_email_address="theemail@whereitissentto.com";


if(empty($_GET) && empty($_POST)) {
die('Ongeldige actie');
}

// Emular register_globals on
if (!ini_get('register_globals')) {
$superglobales = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobales, $_SESSION);
}
foreach ($superglobales as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}

// to prevent header injection
if (eregi("r",$_POST['your_email_address']) || eregi("n",$_POST['your_email_address'])){
exit;
}

// kick anyone whoever tried to inject a header in the form
foreach( $_POST as $value ){
if( strpos($value,'Content-Type:') !== FALSE ){
exit;
}
}


$fields = array_keys($_POST);

function headfunction($url) {
header ("Location: $url");
}

// protect the variable $reserved_vars
if(isset($reserved_vars)) {
unset($reserved_vars);
}
$reserved_vars = array("css_file", "background_color", "background_image", "text_color", "link_color", "visited_link_color", "active_link_color", "font_name", "font_size", "highlight_color", "required_fields", "after_url", "check_email_address", "subject", "your_email_address", "env_report", "owner_name", "autoresponse", "response_subject", "response_mail", "dodosmail_header_file", "dodosmail_footer_file");

function include_dodosmail_header($dodosmail_header_file) {
global $reserved_vars;
foreach($reserved_vars as $reserved_var) {
global $$reserved_var;
}

if(is_file($dodosmail_header_file)) {
include_once($dodosmail_header_file);
return;
} else {
echo "<html>n";
echo "<head>n";
echo "<title>n";
echo "DodosMailn";
echo "</title>n";
if($css_file != "")
echo "<link rel="stylesheet" type="text/css" href="$css_file">n";
echo "</head>n";
echo "<body bgcolor="$background_color" background="$background_image" text="$text_color" link="$link_color" vlink="$visited_link_color" alink="$active_link_color">n";
echo "<font face="$font_name" size="$font_size">n";
}
}

function include_dodosmail_footer($dodosmail_footer_file) {
global $reserved_vars;
foreach($reserved_vars as $reserved_var) {
global $$reserved_var;
}
if(is_file($dodosmail_footer_file)) {
include_once($dodosmail_footer_file);
return;
} else {
echo "</font>n</body>n</html>";
}
}

function dodosmail_error_handle($msg) {
global $highlight_color;
if(isset($highlight_color)) {
$extra_begin = "<font color="".$highlight_color."">";
$extra_end = "</font>";
} else {
$extra_begin = "<span class="DodosMailErrorHighLight">";
$extra_end = "</span>";
}

return $extra_begin.$msg.$extra_end;
}

// checking required fields
// in case they used comma and space, replace
if(strstr($required_fields, ", ")) {
$required_fields = str_replace(", ", ",", $required_fields);
} else {
$required_fields = $required_fields;
}
$required_fields = explode(",", $required_fields);

for($i = 0; $i < count($required_fields); $i++) {
$required_var_name = $required_fields[$i];
if(empty($$required_var_name)) {
include_dodosmail_header($dodosmail_header_file);
echo "<p class="DodosMailError">Fout! - het verplichte veld ".dodosmail_error_handle($required_var_name)." is niet ingevuld.n";
echo "<br /><br /><a href="javascript:history.back(1)">Terug</a>n";
echo "</p>n";
include_dodosmail_footer($dodosmail_footer_file);
exit;
}
}
if($check_email_address == "yes" && !empty($email)) {
if(!check_email($email)) {
include_dodosmail_header($dodosmail_header_file);
echo "<p class="DodosMailError">Fout - het adres ".dodosmail_error_handle($email)." is niet geldig.n";
echo "<br /><br /><a href="javascript:history.back(1)">Terug</a>n";
echo "</p>n";
include_dodosmail_footer($dodosmail_footer_file);
exit;
}
}


for($i = 0; $i < count($fields); $i++) {
$actual_var = $fields[$i];
if(in_array($actual_var, $reserved_vars)) {
$inside_mail = $inside_mail;
} else {
if(is_array($$actual_var)) {
$inside_mail.= "$actual_var: ";
foreach($$actual_var as $actual_val) {
$inside_mail.= "$actual_val ";
}
$inside_mail.= "n";
} else {
$actual_val = stripslashes($$actual_var);
$inside_mail.= "$actual_var: $actual_valn";
}
}
}

// getting other information from the form
$cname = gethostbyaddr($_SERVER[REMOTE_ADDR]);
$inside_mail.=
"
-----------------------------------------------------------------------
SENDER INFO:
IP: $_SERVER[REMOTE_ADDR]
Computer Name: $cname
Browser Type: $_SERVER[HTTP_USER_AGENT]
Page Referer: $_SERVER[HTTP_REFERER]
-----------------------------------------------------------------------
";




$headers .= "MIME-Version: 1.0rn";
$headers .= "X-Priority: 3rn";
$headers .= "X-MSMail-Priority: Normalrn";
$headers .= "X-Mailer: DodosMail 2.0 http://regretless.com/scripts/rn";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "rn";
//$headers .= "Date: ".date("R")."rn";
$headers .= "From: $name <$email>rn";



$success = mail($your_email_address, $subject, $inside_mail, $headers);
if($success) {
if($autoresponse == "yes") {
$response_subject = stripslashes($response_subject);
$response_mail = stripslashes($response_mail);
mail($email, $response_subject, $response_mail, "From: $owner_name <$your_email_address>");
}
if($after_url == "") {
// out put send info
include_dodosmail_header($dodosmail_header_file);


echo "<p>n";

echo "Het formulier is verzonden!</p><ul>";
for($i = 0; $i < count($fields); $i++) {
$actual_var = $fields[$i];
if(in_array($actual_var, $reserved_vars))
echo "";
else {
if(is_array($$actual_var)) {
echo "<li>$actual_var: ";
foreach($$actual_var as $actual_val) {
echo "$actual_val ";
}
echo "</li>n";
} else {
$actual_val = stripslashes($$actual_var);
echo "<li>$actual_var: $actual_val</li>n";
}
}
}
echo "</ul>n<p></p>";
include_dodosmail_footer($dodosmail_footer_file);
exit;
} else {
headfunction($after_url);
}
} else {
include_dodosmail_header($dodosmail_header_file);
echo "<p class="DodosMailError">Fout - Het formulier is tijdelijk niet bruikbaar, gebruik ".dodosmail_error_handle($your_email_address)." om contact op te nemen.n";
echo "<br /><br /><a href="javascript:history.back(1)">Terug</a>n";
echo "</p>n";
include_dodosmail_footer($dodosmail_footer_file);
exit;
}



function check_email($email) {
if( (preg_match('/(@.*@)|(..)|(@.)|(.@)|(^.)/', $email)) ||
(preg_match('/^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$/',$email)) ) {
return true;
}
return false;
}



?>
No comments posted yet

Your Answer:

Login to answer
248 Like 22 Dislike
Previous forums Next forums
Other forums

PHP Multiples of 2, Show posts...not working (wordpress)
I have been using this code to show div.example with 6 li columns inside it, each li is a post with

2 decima places & How to reload my page
Hello There,

How do i put full-stop (.) after second figure from behind? ie if i have 123456

please help me... my password gets encrypted but not able to get in database
hai guys,
please help me... in the following function my password gets encrypted but no

Recording popularity by day, week.. all time?
Hey everyone, I'm creating a site designed around users uploading music. How can I implement a syste

Are sessions secure at all?..
I haven't really gotten into yet, but I was just thinking of something weird..

Lets say you h

Access website from only 1 computer...?
One of my customers wants his website to only be accessed by people in which they bought the website

path to include folder
Hi everyone,

When I'm testing locally, I have to add the name of the site folder as part of t

The repetition structure: the while statement not working
New programming student, have assignment as follows:
A restaurant has 4 lunch combos for custom

why preg_match_all does not return the number of matches
My regex looks like

X[^x{4e00}-x{9fa5}]*Y

(where X and Y are two Chinese characters)

DELETE FROM not working deletes wrong row
Hello

I have the following code which i found but it doesnt work properly.. it comes up with

Sign up to write
Sign up now if you have flare of writing..
Login   |   Register
Follow Us
Indyaspeak @ Facebook Indyaspeak @ Twitter Indyaspeak @ Pinterest RSS



Play Free Quiz and Win Cash