Проблема кодировки электронной почты UTF-8 - вы видите ошибку в этом коде? - PullRequest
1 голос
/ 07 декабря 2011

Можете ли вы обнаружить какие-либо проблемы в приведенном ниже коде, который означает, что электронные письма, отправленные с нашего веб-сайта, не кодируются как UTF-8 и показывают случайные символы, заменяющие правильные символы?Пример источника электронной почты:

Nekdo pr�ve prispel na V� projekt.

Страница формы электронной почты кодируется в формате UTF-8, который отправляет данные на отдельную страницу sendresults.php (также страницу в кодировке UTF-8) со следующим кодом.Возможно, мне здесь не хватает кодировки, чтобы убедиться, что письмо отправлено в UTF-8:

<?php
$subject = 'Contact from mywebsite.com';
$emailadd = 'info@mywebsite.com';
$url = 'http://www.mywebsite.com/contactconfirmation.php';
$req = '1';

$text = "Results from form:\n\n";
$space = ' ';
$line = '
';
foreach ($_POST as $key => $value)
{
if ($req == '1')
{
if ($value == '')
{echo "$key is empty";die;}
}
$j = strlen($key);
if ($j >= 20)
{echo "Name of form element $key cannot be longer than 20 characters";die;}
$j = 20 - $j;
for ($i = 1; $i <= $j; $i++)
{$space .= ' ';}
$value = str_replace('\n', "$line", $value);
$conc = "{$key}:$space{$value}$line";
$text .= $conc;
$space = ' ';
}
mail($emailadd, $subject, $text, 'From: '.$emailadd.'');
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
?>

1 Ответ

3 голосов
/ 07 декабря 2011

Ваш код электронной почты выглядит нормально;виновник - $body, который, кажется, содержит символы ISO-8859-1 (или символы из некоторой другой кодировки).Вам нужно проверить свою заявку, чтобы увидеть, где это происходит.

Если $body поступает из базы данных, это может быть классическая проблема «кодировка соединения mySQL по умолчанию - ISO-8859-1 » (поиск по defaults to a latin1 connection в ссылке)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...