Forum Webscript.Ru

Программирование => PHP => Тема начата: от 01 Сентября 2001, 18:27:13

Название: Как послать e-mail в русской кодировке?
Отправлено: от 01 Сентября 2001, 18:27:13
Как пересылать почты в PHP в кодировке отличной от Western Encoder?
Название: Как послать e-mail в русской кодировке?
Отправлено: polo от 06 Сентября 2001, 01:01:39
перекодировать надо если у тебя текст введен в другой кодировке, это относиться только к русским кодировкам. Вот функция которая перекодирует из одной код. в другую:
$msg = convert_cyr_string($msg, \\"$iz\\", \\"$v\\");
$iz - кодировка из которой ты хочешь перекодировать, например windows-1251 (w)
$v - в кокую кодировку, KOI8-R (k)
$msg = convert_cyr_string($msg, \\"w\\", \\"k\\");
или
$msg = convert_cyr_string($msg, \\"windows-1251\\", \\"KOI8-R\\");
тоже самое
 

Если ты посылаешь данные на русском языке в какой-то латинской кодировке то они будут переведены в ASCII код, кстати не всегда корректно:
Это текст
Смотри код страницы. За дополнительной информацией смотри php.net
Название: Кодировка почтовых отправлений
Отправлено: aleksandr от 21 Октября 2001, 17:09:03
Уважаемые коллеги!

На разрабатываемом сайте мы пытаемся применить PHP-скрипт для отправки уведомлений пользователям по эл.почте.
Соответствующий РНР-файл успешно отправляет сообщение , однако, русская часть текста посылается так, будто она в кодировке KOI8-R,тогда как мы кладем ее на сервер в кодировке windows-1251. Соответственно,  почтовый клиент пытается читать полученное письмо в кодировке KOI8-R, а надо - в windows-1251.
 Каким образом можно включить в PHP-file явное указание почтовому клиенту-получателю сообщения, что оно идет в кодировке windows-1251?  Очевидно, должна быть предусмотрена некая стандартная строчка - аналог известного мета-тэга с явным указанием кодировки, как это делается в html-file. Если сможете подсказать, буду признателен.

Спасибо,
Александр
Название: Как послать e-mail в русской кодировке?
Отправлено: Макс от 21 Октября 2001, 18:52:15
aleksandr
KOI8-r для почты на русском - стандартная кодировка (ИМХО).
Поэтому лучше изменить скрипт, чтобы он текст из win1251 конвертировал в KOI8-r:
$msg = convert_cyr_string($msg, "w", "k");

Если все-же хотите отправлять в win1251 то посмотрите, что скрипт в header-е письма пишет по поводу кодировки:

Content-type: text/html; charset="koi-8r"
это означает что письмо будет отсылаться в KOI8-r.
Конечно же вместо text/html может быть что-то другое- например text/plain
Напиши следующее:
Content-type: text/html; charset="win1251"
должно отпралять в win1251

Но все же лучше в KOI8-r отправлять.
Название: кодировка
Отправлено: aleksandr от 21 Октября 2001, 19:46:24
Максим, спасибо, дорогой.
Я применил
$msg = convert_cyr_string($msg, "w", "k");
В результате козябрики в почтовом отправлении стали слегка приятнее, но все-равно не по-русски.
Скажем исходный текст: Это русская часть текста, написанная кирилицей.
Читается почтовым клиентом: .в. агбб .п з.бвм в. бв., .. Ёб....п  ЁаЁ.Ёж...
Такого я раньше  не видал:)
Клиент (outlook), разумеется как и раньше пытается получать  текст в KOI8-r.
Название: Как послать e-mail в русской кодировке?
Отправлено: Макс от 21 Октября 2001, 22:38:42
Мда ... Странно ....

А исходный текст случайно не в DOS-кодировке - уж очень на нее похоже.

Может проблемы не с кодировкой а со скриптом.
Если текст не DOS-вский покажи какие header-ы скрипт пишет в письмо (а лучше часть скрипта)
Название: Как послать e-mail в русской кодировке?
Отправлено: aleksandr от 21 Октября 2001, 23:39:19
Ура! Максим, заработала правильная кодировка. Дело было в том, что для тестирования я вбил русский текст в скрипт прямо фаром на удаленном сервере. При этом  и получился он не в win1251. Теперь, когда сделал заготовку в  виндовом блокноте и поднял на сервер - все сработало по твоему рецепту.
 Thanks a lot once more.
Название: Как послать e-mail в русской кодировке?
Отправлено: Kup от 10 Марта 2003, 13:48:10
Народ, помогите пожалуйста!

Прочитал все, что здесь было, но так и не справился с проблемой. Я в форме заполняю поля (тема, тело письма) а потом файлом php посылаю письмо. У меня оно приходит в кривой кодировке, приходится в OE каждый раз вручную изменять кодировку на Windows. Что делать?

заранее спасибо!
Название: Как послать e-mail в русской кодировке?
Отправлено: Макс от 10 Марта 2003, 14:03:36
покажи, какие ты mime-заголовки шлеш
Название: Как послать e-mail в русской кодировке?
Отправлено: Kup от 10 Марта 2003, 14:21:10
насколько я понимаю - никакие не шлю :)
Название: Как послать e-mail в русской кодировке?
Отправлено: Mog. от 10 Марта 2003, 16:34:51
Цитировать
Kup:
насколько я понимаю - никакие не шлю

Цитировать
Макс:
Напиши следующее:
Content-type: text/html; charset="win1251"
должно отпралять в win1251
Название: Как послать e-mail в русской кодировке?
Отправлено: Kup от 10 Марта 2003, 16:47:57
Я очень торможу и ничего не умею, но все же... Где написать? :)

в Header? пробовал - не помогает. Если все же в него, попробую еще раз...
Название: Как послать e-mail в русской кодировке?
Отправлено: Mog. от 10 Марта 2003, 17:28:51
Хорошо, если у тебя руки не дошли поискать, то вот тебе для размышления примерчик

Example 4. Sending complex email.

/* recipients */
$to  = "Mary " . ", " ; // note the comma
$to .= "Kelly ";

/* subject */
$subject = "Birthday Reminders for August";

/* message */
$message = \'


 Birthday Reminders for August


Here are the birthdays upcoming in August!



 
 
 
 
 
 
 
 
 
PersonDayMonthYear
Joe3rdAugust1970
Sally17thAugust1973



\';

/* To send HTML mail, you can set the Content-type header. */
$headers  = "MIME-Version: 1.0\\r\\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\\r\\n";

/* additional headers */
$headers .= "From: Birthday Reminder \\r\\n";

$headers .= "Cc: [email]birthdayarchive@example.com[/email]\\r\\n";
$headers .= "Bcc: [email]birthdaycheck@example.com[/email]\\r\\n";

/* and now mail it */
mail($to, $subject, $message, $headers);


тебя должны интересовать поля
$headers  = "MIME-Version: 1.0\\r\\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\\r\\n";
Или нет, одно поле
$headers .= "Content-type: text/plain; charset=iso-8859-1\\r\\n";

Взято из http://www.php.net/manual/en/function.mail.php
Название: Как послать e-mail в русской кодировке?
Отправлено: Kup от 12 Марта 2003, 01:28:06
Не знаю... Все попробовал - все равно каждый раз руками в ОЕ менять приходится кодировку. Кстати, может в теме кодировка левая, и потому все съезжает?

ЗЫ. Спасибо за советы, которые я уже получил!
Название: Как послать e-mail в русской кодировке?
Отправлено: Макс от 12 Марта 2003, 04:20:15
Kup
в OutLook-е можно посмотреть исходный код письма со всеми заголовками. Посмотри, что у тебя там в Content-Type