Автор Тема: Как послать e-mail в русской кодировке?  (Прочитано 7486 раз)

0 Пользователей и 1 Гость просматривают эту тему.

  • Гость
Как послать e-mail в русской кодировке?
« : 01 Сентября 2001, 18:27:13 »
Как пересылать почты в PHP в кодировке отличной от Western Encoder?

Оффлайн polo

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 48
  • +0/-0
  • 0
    • Просмотр профиля
    • http://netadmin.ws
Как послать e-mail в русской кодировке?
« Ответ #1 : 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

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Кодировка почтовых отправлений
« Ответ #2 : 21 Октября 2001, 17:09:03 »
Уважаемые коллеги!

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

Спасибо,
Александр

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Как послать e-mail в русской кодировке?
« Ответ #3 : 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 отправлять.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн aleksandr

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
кодировка
« Ответ #4 : 21 Октября 2001, 19:46:24 »
Максим, спасибо, дорогой.
Я применил
$msg = convert_cyr_string($msg, "w", "k");
В результате козябрики в почтовом отправлении стали слегка приятнее, но все-равно не по-русски.
Скажем исходный текст: Это русская часть текста, написанная кирилицей.
Читается почтовым клиентом: .в. агбб .п з.бвм в. бв., .. Ёб....п  ЁаЁ.Ёж...
Такого я раньше  не видал:)
Клиент (outlook), разумеется как и раньше пытается получать  текст в KOI8-r.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Как послать e-mail в русской кодировке?
« Ответ #5 : 21 Октября 2001, 22:38:42 »
Мда ... Странно ....

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

Может проблемы не с кодировкой а со скриптом.
Если текст не DOS-вский покажи какие header-ы скрипт пишет в письмо (а лучше часть скрипта)
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн aleksandr

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как послать e-mail в русской кодировке?
« Ответ #6 : 21 Октября 2001, 23:39:19 »
Ура! Максим, заработала правильная кодировка. Дело было в том, что для тестирования я вбил русский текст в скрипт прямо фаром на удаленном сервере. При этом  и получился он не в win1251. Теперь, когда сделал заготовку в  виндовом блокноте и поднял на сервер - все сработало по твоему рецепту.
 Thanks a lot once more.

Оффлайн Kup

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как послать e-mail в русской кодировке?
« Ответ #7 : 10 Марта 2003, 13:48:10 »
Народ, помогите пожалуйста!

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

заранее спасибо!

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Как послать e-mail в русской кодировке?
« Ответ #8 : 10 Марта 2003, 14:03:36 »
покажи, какие ты mime-заголовки шлеш
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Kup

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как послать e-mail в русской кодировке?
« Ответ #9 : 10 Марта 2003, 14:21:10 »
насколько я понимаю - никакие не шлю :)

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Как послать e-mail в русской кодировке?
« Ответ #10 : 10 Марта 2003, 16:34:51 »
Цитировать
Kup:
насколько я понимаю - никакие не шлю

Цитировать
Макс:
Напиши следующее:
Content-type: text/html; charset="win1251"
должно отпралять в win1251
Все болезни от нервов, только сифилис от удовольствия

Оффлайн Kup

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как послать e-mail в русской кодировке?
« Ответ #11 : 10 Марта 2003, 16:47:57 »
Я очень торможу и ничего не умею, но все же... Где написать? :)

в Header? пробовал - не помогает. Если все же в него, попробую еще раз...

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Как послать e-mail в русской кодировке?
« Ответ #12 : 10 Марта 2003, 17:28:51 »
Хорошо, если у тебя руки не дошли поискать, то вот тебе для размышления примерчик

Example 4. Sending complex email
.

/* recipients */
$to  "Mary <mary@example.com>" ", " // note the comma
$to .= "Kelly <kelly@example.com>";

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

/* message */
$message = \'
<html>
<head>
 <title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
 <tr>
  <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
 </tr>
 <tr>
  <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
 </tr>
 <tr>
  <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
 </tr>
</table>
</body>
</html>
\';

/* 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 <birthday@example.com>\\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
Все болезни от нервов, только сифилис от удовольствия

Оффлайн Kup

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как послать e-mail в русской кодировке?
« Ответ #13 : 12 Марта 2003, 01:28:06 »
Не знаю... Все попробовал - все равно каждый раз руками в ОЕ менять приходится кодировку. Кстати, может в теме кодировка левая, и потому все съезжает?

ЗЫ. Спасибо за советы, которые я уже получил!

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Как послать e-mail в русской кодировке?
« Ответ #14 : 12 Марта 2003, 04:20:15 »
Kup
в OutLook-е можно посмотреть исходный код письма со всеми заголовками. Посмотри, что у тебя там в Content-Type
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28