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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Кодировка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Perun
Отправлено: 19 Февраля, 2017 - 21:23:17
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Что означают части. заключенные в апострофы?:
PHP:
скопировать код в буфер обмена
  1. self::$subject = '=?utf-8?b?'.base64_encode(self::$subject).'?='

(Отредактировано автором: 19 Февраля, 2017 - 21:25:13)

 
 Top
Строитель Модератор
Отправлено: 19 Февраля, 2017 - 21:51:35
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Perun пишет:
Что означают части. заключенные в апострофы?:
Это похоже на динамический шаблон регулярного выражения. Но я лишь предполагаю, т.к. по одной строке кода понять трудно.
 
 Top
Мелкий Супермодератор
Отправлено: 19 Февраля, 2017 - 22:02:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Судя по характерному имени статического свойства - это принятый не-помню-в-каком-RFC-про-почту метод кодирования заголовка письма. Означает, что дальше идёт utf8 строка, закодированная в base64.
Что поделать, почта - штука очень древняя. Очень древняя. И за много десятилетий своего существования обросла разным функционалом, но при этом авторы последующих улучшений всегда старались сохранить совместимость со старыми RFC, поэтому некоторые вещи могут выглядеть довольно необычно.


-----
PostgreSQL DBA
 
 Top
Perun
Отправлено: 19 Февраля, 2017 - 22:06:25
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Да, это класс отправки на почту:

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).'?='
 
 Top
Мелкий Супермодератор
Отправлено: 19 Февраля, 2017 - 23:04:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Если для чего-то хотите узнать, как могут кодироваться строки в заголовках писем - читайте RFC, посвящённые почте.
Похоже, rfc2047 описывает кодирование не ascii-текста.
Цитата:
encoded-word = "=?" charset "?" encoding "?" encoded-text "?="

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

Если вам необходимо почту отправлять - используйте более высокоуровневые средства вроде phpmailer, где многие вопросы поддержки этого множества вышедших RFC учтены и наличествуют внятный высокоуровневый интерфейс.


-----
PostgreSQL DBA
 
 Top
Perun
Отправлено: 20 Февраля, 2017 - 09:22:24
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Спасибо!!
 
 Top
Perun
Отправлено: 20 Февраля, 2017 - 13:31:48
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




А денверовский sendmail - это чисто внутренняя утилита-заглушка и только создает внутренние файлы, но на самом деле никуда ничего не отправляет? А то я письма ждал на ящик пол -дня Улыбка

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

Пока оставил этот вопрос на будущее, работаю только с английским

(Отредактировано автором: 20 Февраля, 2017 - 13:34:00)

 
 Top
Мелкий Супермодератор
Отправлено: 20 Февраля, 2017 - 13:47:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Perun пишет:
Вот такая абракадабра получилась при отправке:

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

А "не работает" - не описание.


-----
PostgreSQL DBA
 
 Top
Perun
Отправлено: 20 Февраля, 2017 - 13:56:29
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Мелкий пишет:
А "не работает" - не описание.

А как описать-то?
Я процитировал то, что вижу в файле денвера, как subject.
 
 Top
Мелкий Супермодератор
Отправлено: 20 Февраля, 2017 - 14:07:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




И это нормальное значение для subject. Что "не работает", почему?


-----
PostgreSQL DBA
 
 Top
Perun
Отправлено: 20 Февраля, 2017 - 14:21:03
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Мелкий пишет:
И это нормальное значение для subject. Что "не работает", почему?


Так в поле темы у получателя тоже само же будет?:
Цитата:
=?utf-8?b?UmVnaXN0cmF0aW9uIG9uIHRoZSBzaXRl?=
 
 Top
teleoperator27
Отправлено: 20 Февраля, 2017 - 14:26:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 265
Дата рег-ции: Янв. 2017  


Помог: 21 раз(а)




Когда выложите на рабочий сервер, все будет работать. Эти все кракозябры для почтовых клиентов, а вы читаете банальный тхт обычным блокнотом.
 
My status
 Top
Мелкий Супермодератор
Отправлено: 20 Февраля, 2017 - 14:34:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




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>


-----
PostgreSQL DBA
 
 Top
Perun
Отправлено: 20 Февраля, 2017 - 15:14:21
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Спасибо.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB