Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Кодировка
Форумы портала PHP.SU » » Вопросы новичков » Кодировка

Страниц (1): [1]
 

1. Perun - 19 Февраля, 2017 - 21:23:17 - перейти к сообщению
Что означают части. заключенные в апострофы?:
PHP:
скопировать код в буфер обмена
  1. self::$subject = '=?utf-8?b?'.base64_encode(self::$subject).'?='
2. Строитель - 19 Февраля, 2017 - 21:51:35 - перейти к сообщению
Perun пишет:
Что означают части. заключенные в апострофы?:
Это похоже на динамический шаблон регулярного выражения. Но я лишь предполагаю, т.к. по одной строке кода понять трудно.
3. Мелкий - 19 Февраля, 2017 - 22:02:38 - перейти к сообщению
Судя по характерному имени статического свойства - это принятый не-помню-в-каком-RFC-про-почту метод кодирования заголовка письма. Означает, что дальше идёт utf8 строка, закодированная в base64.
Что поделать, почта - штука очень древняя. Очень древняя. И за много десятилетий своего существования обросла разным функционалом, но при этом авторы последующих улучшений всегда старались сохранить совместимость со старыми RFC, поэтому некоторые вещи могут выглядеть довольно необычно.
4. Perun - 19 Февраля, 2017 - 22:06:25 - перейти к сообщению
Да, это класс отправки на почту:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class Mail {
  3.   static $subject = 'Something here';
  4.   static $from = 'user@gmail.comself::';
  5.   static $to = 'law4sch@gmail.com';
  6.   static $text = 'Шаблонное письмо';
  7.   static $headers = '';
  8.  
  9.   static function testMail() {
  10.  
  11.    
  12.     if(mail(self::$to, 'Расчеты', "Тест")) {
  13.       echo "OK";
  14.     } else {
  15.       echo "NO!";
  16.     }
  17.     exit();
  18.   }
  19.   static function send() {
  20.     self::$subject = '=?utf-8?b?'. base64_encode(self::$subject) .'?=';
  21.     self::$headers = "Content-type: text/html; charset=\"utf-8\"\r\n";
  22.  
  23.     self::$headers .= "From: ".self::$from."\r\n";
  24.     self::$headers .= "MIME-Version: 1.0\r\n";
  25.     self::$headers .= "Date: ".date('D, d M Y h:i:s O') ."\r\n";
  26.     self::$headers .= "Precedence: bulk\r\n";
  27.  
  28.     return mail(self::$to, self::$subject, self::$text);
  29.   }
  30. }
  31. ?>


Я собственно сам синтаксис этой записи не очень понимаю...
'=?utf-8?b?'.base64_encode(self::$subject).'?='
5. Мелкий - 19 Февраля, 2017 - 23:04:54 - перейти к сообщению
Если для чего-то хотите узнать, как могут кодироваться строки в заголовках писем - читайте RFC, посвящённые почте.
Похоже, rfc2047 описывает кодирование не ascii-текста.
Цитата:
encoded-word = "=?" charset "?" encoding "?" encoded-text "?="

Т.е. "понимать" в этом синтаксисе нечего. Он так и задан. b означает base64, там дальше по тексту это поясняется.

Если вам необходимо почту отправлять - используйте более высокоуровневые средства вроде phpmailer, где многие вопросы поддержки этого множества вышедших RFC учтены и наличествуют внятный высокоуровневый интерфейс.
6. Perun - 20 Февраля, 2017 - 09:22:24 - перейти к сообщению
Спасибо!!
7. Perun - 20 Февраля, 2017 - 13:31:48 - перейти к сообщению
А денверовский sendmail - это чисто внутренняя утилита-заглушка и только создает внутренние файлы, но на самом деле никуда ничего не отправляет? А то я письма ждал на ящик пол -дня Улыбка

И кстати та кодировка, что в первом сообщении - не работает...
Вот такая абракадабра получилась при отправке:
Цитата:
=?utf-8?b?UmVnaXN0cmF0aW9uIG9uIHRoZSBzaXRl?=

Пока оставил этот вопрос на будущее, работаю только с английским
8. Мелкий - 20 Февраля, 2017 - 13:47:16 - перейти к сообщению
Perun пишет:
Вот такая абракадабра получилась при отправке:

"Registration on the site", всё правильно выглядит.

А "не работает" - не описание.
9. Perun - 20 Февраля, 2017 - 13:56:29 - перейти к сообщению
Мелкий пишет:
А "не работает" - не описание.

А как описать-то?
Я процитировал то, что вижу в файле денвера, как subject.
10. Мелкий - 20 Февраля, 2017 - 14:07:42 - перейти к сообщению
И это нормальное значение для subject. Что "не работает", почему?
11. Perun - 20 Февраля, 2017 - 14:21:03 - перейти к сообщению
Мелкий пишет:
И это нормальное значение для subject. Что "не работает", почему?


Так в поле темы у получателя тоже само же будет?:
Цитата:
=?utf-8?b?UmVnaXN0cmF0aW9uIG9uIHRoZSBzaXRl?=
12. teleoperator27 - 20 Февраля, 2017 - 14:26:58 - перейти к сообщению
Когда выложите на рабочий сервер, все будет работать. Эти все кракозябры для почтовых клиентов, а вы читаете банальный тхт обычным блокнотом.
13. Мелкий - 20 Февраля, 2017 - 14:34:35 - перейти к сообщению
Perun пишет:
Так в поле темы у получателя тоже само же будет?:

С чего вы это взяли?
Ну, под windows95 с почтовым клиентом того же года выпуска - может быть. rfc всё-таки 1996 годом датируется.

Возьмите пару писем со своего почтового ящика и почитайте заголовки. Например, несколько строк заголовков письма от яндекса
Цитата:
X-Mailer: YandexSender/0.1
Subject: =?utf-8?b?0J7RgtC60LvRjtGH0LXQvdC40LUgT3BlbklEINC00LvRjyDQv9C+0LvRjNC3?=
=?utf-8?b?0L7QstCw0YLQtdC70LXQuSDQr9C90LTQtdC60YHQsA==?=
From: =?utf-8?b?0JrQvtC80LDQvdC00LAg0K/QvdC00LXQutGBLtCf0LDRgdC/0L7RgNGC0LA=?=
<hello@yandex-team.ru>
14. Perun - 20 Февраля, 2017 - 15:14:21 - перейти к сообщению
Спасибо.

 

Powered by ExBB FM 1.0 RC1