$message = 'http://foto-randewu.ru/Gruppa?NG=19';
В этом случае полученное E-mail содержит:
http://foto-randewu.ru/Gruppa?NG
или в шестнадцатеричном виде:
68 74 74 70 3A 2F 2F 66-6F 74 6F 2D 72 61 6E 64 77 75 2E 72 75 2F 47-72 75 70 70 61 2F 47 72 75 70 70 61 2E 70 68 70-3F 4E 47 72 75 70 70 61 19
Знак равенства исчез, а символы 19 превратились в шестнадцатеричный код 19.
Что это? Ошибка в функции MAIL или ..? Как с этим бороться?
Спустя 13 часов, 46 минут, 15 секунд (22.03.2010 - 14:28) Белилов написал(а):
Можно уточнить вопрос.
Оказывается, знак равенства и следующий за ним символ искажаются. И не только в URL, как я предполагал, а всегда.
Оказывается, знак равенства и следующий за ним символ искажаются. И не только в URL, как я предполагал, а всегда.
Спустя 8 минут, 46 секунд (22.03.2010 - 14:37) jetistyum написал(а):
может корректно указывать заголовки кодировки?
Спустя 2 дня, 3 часа, 23 минуты, 29 секунд (24.03.2010 - 18:00) Белилов написал(а):
Цитата (jetistyum @ 22.03.2010 - 11:37) |
может корректно указывать заголовки кодировки? |
Уточните, что вы имеете в виду: аргумент $headers функции mail() или тег
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> ?
И что там должно стоять, по-вашему?
Спустя 2 часа, 28 минут, 13 секунд (24.03.2010 - 20:29) twin написал(а):
Тут почитай.
Спустя 1 день, 2 часа, 44 минуты, 14 секунд (25.03.2010 - 23:13) Белилов написал(а):
Цитата (twin @ 24.03.2010 - 17:29) |
Тут почитай. |
Спасибо за эту ссылку! Очень полезная и понятная статья.
При тестировании класса IRB_Mailer вместо каждого символа текста письма я получал вопросительный знак. И помогла замена строки « public $charset = 'utf-8';» на « public $charset = 'windows-1251';». Тогда текст стал читаемым не только в приложении к письму, а и в самом письме.
Может быть, надо позволить управлять этим при вызове класса? В каких случаях надо менять кодировку? Как?
Но вернусь к своему первому вопросу о искажении сообщения. Приведу содержание аргумента $messagе при вызове mail($recipient,$subject,$message,$headers):
--MIME_BOUNDRY
Content-Type: text/plain; charset="windows-1251"
Content-Transfer-Encoding: quoted-printable
http://foto-randewu.ru/Gruppa?NG=19
Знак равенства встречается здесь неоднократно. Это вредит? Если это ошибка, то как ее избежать?
Спустя 5 часов, 56 минут, 30 секунд (26.03.2010 - 05:09) twin написал(а):
Цитата |
Может быть, надо позволить управлять этим при вызове класса? |
Можно. Мне религия не позволяет. Если кто то мучается с местечковыми кодировками типа win и прочая, то это его право модифицировать класс. Я сделал возможность изменить кодировку руками, метод писать не стал, это против моих принципов. Потому что есть универсальная кодировка (utf-8), все остальное от лукаваго.
По вопросу не понял ничего. Причем тут знаки равенства?
Это ни какая не ошибка функции. Функция просто передает значения. А вот обработка уже идет дальше, на почтовом сервере или в почтовом клиенте.
Если письмо сформировано абы как, то конечно будут искажения, я все там подробно расписал.