|
|
|
| Здравствуйте, вот кусок кода который отправляет почту (из Liteforum)
Никак не могу добиться чтобы кодировка нормальная была!
Или в поле "От:" абракадабра,
или в теле сообщения :(
А так писма идут нормально!
<?
$theme = trim($_POST['theme']);
$message = trim($_POST['message']);
$message = "От ".$_COOKIE['current_author']."\n".nl2br($message);
// Проверяем введённые данные на соответствие
if(empty($theme)) links($id_forum,
$id_theme,
"Тема сообщения не введена");
if(empty($message)) links($id_forum,
$id_theme,
"Сообщение не введено");
$query = "SELECT * FROM authors
WHERE id_author = $id_author";
$ath = mysql_query($query);
if ($ath)
{
$author = mysql_fetch_array($ath);
if(trim($author['email']) == "" || $author['email'] == "-")
{
$namepage = "<i>e-mail</i> отсутствует";
exit();
}
$theme = convert_cyr_string(stripslashes($theme),'w','k');
$message = convert_cyr_string(stripslashes($message),'w','k');
//$header = "Content-Type: text/html; charset=KOI8-R\r\n";
// $header = "Content-Type: text/html; charset=windows-1251\r\n\r\n";
$header .= "Content-Type: text/plain; charset=windows-1251\r\n";
if(!empty($_COOKIE['current_author']))
{
$query = "SELECT email FROM authors
WHERE name = '".$_COOKIE['current_author']."'";
$ath = mysql_query($query);
if (!$ath) exit("Ошибка");
$email = mysql_result($ath,0);
if(!empty($email)) $email = "<$email>";
$header .= "From: ".$_COOKIE['current_author']." $email\r\n";
}
//$header .= "\r\n";
$header .= "Content-Type: text/plain; charset=windows-1251\r\n";
if(@mail($author['email'], $theme, $message, $header))
{
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=read.php?id_forum=$id_forum&id_theme=$id_theme&id_post=$id_post'>
</HEAD></HTML>";
}
else links($id_forum, $id_theme, "К сожалению, письмо не было отправлено");
} else puterror("Ошибочный запрос к таблице авторов автору: $id_author");
?>
|
| |
|
|
|
|
|
|
|
для: Boris
(07.12.2005 в 08:10)
| | Уберите строки
<?php
$theme = convert_cyr_string(stripslashes($theme),'w','k');
$message = convert_cyr_string(stripslashes($message),'w','k');
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(07.12.2005 в 13:56)
| | Нет толку, комментирую
$message = convert_cyr_string(stripslashes($message),'w','k');
|
тогда текст сообщения = КАСГКШНЕМпаывпаыф
Пусть уж имя будет "плохим", но текст по-русски!
А код mail.php у меня такой:
<?php
///////////////////////////////////////////////////
// Web-приложение форум - LiteForum
// Поддержка http://www.softtime.ru/forum/
// 2003-2004 (C) IT-студия SoftTime (http://www.softtime.ru)
// Симдянов И.В. (simdyanov@softtime.ru)
// Голышев С.В. (softtime@softtime.ru)
// Кузнецов М.В. (kuznetsov@softtime.ru)
///////////////////////////////////////////////////
// 20.12.2004 Симдянов И.В. (simdyanov@softtime.ru) - исправление
// проблем с кодировками в почтовом уведомлении
///////////////////////////////////////////////////
// Выставляем уровень обработки ошибок (http://www.softtime.ru/info/articlephp.php?id_article=23)
Error_Reporting(E_ALL & ~E_NOTICE);
// Устанавливаем соединение с базой данных
require_once("../admin/config_forum.php");
// Подключаем библиотеку форума
require_once("./utils/utils.php");
// Выводим шапку страницы
require_once("./utils/topnull.php");
// Извлекаем значения переменных
$id_forum = $_POST['id_forum'];
$id_theme = $_POST['id_theme'];
$id_post = $_POST['id_post'];
$id_author = $_POST['id_author'];
if(!preg_match("|^[\d]+$|",$id_post) && !empty($id_post)) exit();
if(!preg_match("|^[\d]+$|",$id_theme) && !empty($id_theme)) exit();
if(!preg_match("|^[\d]+$|",$id_forum) && !empty($id_forum)) exit();
if(!preg_match("|^[\d]+$|",$id_author) && !empty($id_author)) exit();
$theme = trim($_POST['theme']);
$message = trim($_POST['message']);
$message = "От ".$_COOKIE['current_author']."\n".nl2br($message);
// Проверяем введённые данные на соответствие
if(empty($theme)) links($id_forum,
$id_theme,
"Тема сообщения не введена");
if(empty($message)) links($id_forum,
$id_theme,
"Сообщение не введено");
$query = "SELECT * FROM authors
WHERE id_author = $id_author";
$ath = mysql_query($query);
if ($ath)
{
$author = mysql_fetch_array($ath);
if(trim($author['email']) == "" || $author['email'] == "-")
{
$namepage = "<i>e-mail</i> отсутствует";
exit();
}
$theme = convert_cyr_string(stripslashes($theme),'w','k');
$message = convert_cyr_string(stripslashes($message),'w','k');
$header = "Content-Type: text/html; charset=KOI8-R\r\n";
// $header = "Content-Type: text/html; charset=windows-1251\r\n\r\n";
//$header .= "Content-Type: text/plain; charset=windows-1251\r\n";
if(!empty($_COOKIE['current_author']))
{
$query = "SELECT email FROM authors
WHERE name = '".$_COOKIE['current_author']."'";
$ath = mysql_query($query);
if (!$ath) exit("Ошибка");
$email = mysql_result($ath,0);
if(!empty($email)) $email = "<$email>";
$header .= "From: ".$_COOKIE['current_author']." $email\r\n";
}
$header .= "\r\n";
//$header .= "Content-Type: text/plain; charset=windows-1251\r\n";
if(@mail($author['email'], $theme, $message, $header))
{
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=read.php?id_forum=$id_forum&id_theme=$id_theme&id_post=$id_post'>
</HEAD></HTML>";
}
else links($id_forum, $id_theme, "К сожалению, письмо не было отправлено");
} else puterror("Ошибочный запрос к таблице авторов автору: $id_author");
?>
|
| |
|
|
|
|
|
|
|
для: Boris
(07.12.2005 в 14:28)
| | Сначала закомментируйте строку
<?PHP
$header = "Content-Type: text/html; charset=KOI8-R\r\n";
?>
|
если не поможет, то измените ее на
<?PHP
$header = "Content-Type: text/html; charset=win-1251\r\n";
?>
|
Каким почтовым клиентом пользуетесь? | |
|
|
|
|
|
|
|
для: Artemy
(07.12.2005 в 15:09)
| | И from и subj корректно отображается в любом клиенте, если прописан как:
Subject: =?koi8-r?B?8M/E1Ncu?=
Понятно, что =?koi8-r? задает кодировку данного поля (может быть и win-1251 и тп), ?= - похоже, закрывает поле. А вот что внутри, чем закодировано, я пока не разобрался. Если разберусь - отпишу. | |
|
|
|
|
|
|
|
для: denvor
(13.12.2005 в 19:13)
| | А хоть один почтовый агент эти поля нормально отображает? Вообще не доллжно быть так... | |
|
|
|
|
|
|
|
для: cheops
(13.12.2005 в 22:03)
| | И аутлук и theBat. Вот кусок исходного соосщения, формируемого аутлуком:
From: =?koi8-r?B?5cbJzcXOy88g6S7rLg==?= <fbvcodznbbfs@gph.com>
To: <info@ooo.ru>
Subject: =?koi8-r?B?9dPM1cfJINDPINDSz8XL1MnSz9fBzsnALCD Tz9rEwc7JwCDJINfFxMXOycAg08HK1MEg98 Hbxcog?=
=?koi8-r?B?y8/N0MHOyckuINXYzg==?=
Date: Wed, 14 Dec 2005 04:51:10 +0400
Reply-To: fbvcodznbbfs@gph.com
Mime-Version: 1.0
Content-Type: multipart/related;
boundary="----=_NextPart_000_0064_01JXQ151.59ZP3R57"
X-Mailer: Microsoft Outlook Express 6.00.2600.0000
X-Priority: 1
X-MSMail-Priority: High
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
Message-Id: <20051214015250.29870A9B2@bird.zenon.net>
This is a multi-part message in MIME format.
------=_NextPart_000_0064_01JXQ151.59ZP3R57
Content-Type: text/html;
charset=koi8-r
Content-Transfer-Encoding: 8bit
<html>
<head>
</head>
<body>
<table width="91%" align="center" cellpadding="0" cellspacing="0" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:13px; ">
<tr>
<td><p>äÏÂÒÙÊ ÄÅÎØ. <br>
|
Основной текст сообщения, как и положено - в кои-8, а вот и From и Subject - обратите внимание!- непонятно как закодированы.
А вот кусок сообщения, созданного the Bat:
Subject: =?Windows-1251?B?z/Du4uXw6uA=?=
MIME-Version: 1.0
Content-Type: text/plain; charset=Windows-1251
Content-Transfer-Encoding: 8bit
X-Spam-Checker-Version: SpamCheck 3.0.1 (2004-10-22) on mx2.centre.ru
X-Spam-Status: No, hits=-1.2 required=5.0
Здравствуйте, .
|
Обратите внимание на Subject -то же самое. Какие будут предположения? Или кто-нибудь знает, как формируются такие поля? | |
|
|
|
|
|
|
|
для: denvor
(14.12.2005 в 09:28)
| | Хм... а может это Spam фильтр чего даёт... хостеры никак ситуацию не комментируют? | |
|
|
|
|
|
|
|
для: cheops
(14.12.2005 в 14:00)
| | у хостеров я не спрашивал, но смотрел разные письма, пришедшие на/из разных мест. Сомневаюсь, что хостеры. Копаем дальше... | |
|
|
|
|
|
|
|
для: denvor
(14.12.2005 в 15:03)
| | Пошлите себе письмо с этого форума - заголовки такие же приходят? | |
|
|
|