![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| bars80080 |
|
||||||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
возникла заморочка и что-то в голову пока никак не приходит решение
система такая: первый пользователь заполняет форму и жмёт кнопку отправить, данные формы записываются в БД, затем отыскивается выбранный пользователь и на его почтовый ящик шлётся письмо извещение, что ему надо заглянуть на сайт вроде просто. текст пребывает в кодировке win-1251, а отсылается с помощью такой вот функции:
и тут у нас возникает усложнение (хотя вроде должно было быть упрощение). хост, на котором всё это крутится, помимо отсылки почтовых сообщений даёт ещё возможность пользоваться своими собственными почтовыми ящиками. то есть, если адрес сайта site.ru, то мы имеем почтовые ящики [email protected], [email protected] и т.д. а пользователи пользующиеся этой системой, как раз имеют эти самые почтовые ящики. админы поставили промежуточный сервак у нас в конторе и настроили его так, что внутренняя почта (с [email protected] на [email protected]) идёт через него и не далее. то есть до сервера site.ru письма не доходят. и вот тут начинается мистика. письма с внутреннего адреса на внутренний или внешний доходят нормально. внешние письма до внутреннего адреса доходят тоже нормально. теперь же я отправляю программно письмо-извещение из пхп с site.ru на внешний адрес (допустим [email protected]) - тоже всё нормально, но если на внутренний ([email protected]), то кодировка ломается /видимо, где на промежуточном сервере/ админы, в виду того что обмен почтой на всех направлениях идёт нормальный - отсылают меня с формулировкой: это что-то у тебя не клеится. а я мягко говоря даже не знаю, что копать вид кракозябр приходящих на внутренний адрес:
пытался жёстко прописать заголовок, навроде:
не помогает если отсылать писбмо в виде html в кодировке win-1251
, то на внешний адрес приходит нормально, а на внутренний заголовок в виде кракозябр, а само письмо в виде прикреплённого файла. открываешь файл - внутри нормальное, но сам факт выдирания текста из письма смотрится дико. если пхп тут дело не поправить, то куда смотреть? |
||||||||
|
|||||||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
ух-ты, кто-то молча со мной не согласился. вопрос только в чём?
это конечно какие-то заморочки с промежуточным сервером, но ответственность с меня не снимают. сейчас отправил с помощью выше упомянутых двух функций письма со стороннего хоста. так что письма по-любому являлись внешними. те что прошли через промежуточный сервер вновь подверглись перекодировке. в то время как обычные письма, отправляемые людьми со своих клиентов доходят нормально. значит, всё же я чего-то в этих функциях не дописываю |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
мда, накидал короче кучу заголовков самых разных и закодировл в base64, вроде заработало.
на досуге надо будет поковыряться |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
это latin1 смотреть надо не "кракозябры", а заголовки. Клиент перекодирует текст в соответствии с заголовками. вы все почему-то никогда не смотрите на результаты своих действий только и видно - "я выставил права на файлы!", "я задал кодировку" "я делал то, я сделал сё". Но при этом никто никогда не проверяет - а каков был результат операции. Получили ли мы то, что хотели? Мы посылаем письмо. С некоторыми заголовками и в некоторой кодировке. Мы получили письмо. почему же мы не смотрим, в какой оно сейчас кодировке и с какими заголовками? А типо пялимся на экран, на котором почтовая программа выдает нам результат своих каких-то вычислений? заголовок сообщения недо не "пытаться" "жестко прописывать", а с самого начала правильно кодировать. При этом, разумеется, сначала разобраться с кодировками, убедиться, что все еодируется правильно и раскодируется ДО отправки. После этого поотправлять и посмотреть на результат. Добавлено через 3 минуты и 55 секунд Но опять же - смотреть результат не в почтовой программе, как она его показыает, а хидер в письме. поменялся он? Не поменялся? Если не поменялся, то показывает ли его программа правильно? Если неправильно, то посмотреть, какая кодировка выставлена в настройках клиента. Поменять на нужну. посмотреть. При этом надо, естественно, проводить исследования аккуратно, не смешивая одно с другим, и по четкому плану. А не "я пробовал то, я пробовал сё". Причем это совсем не специальный программистский навык. Этому учет в школе на лобьораторной работе. Но в результате, почему-то, вместо планомерного изучения мы в итоге имеем "накидал короче кучу"... |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
ага именно так. пялюсь в оутлук, а куда ещё смотреть - не известно. оутлук показывал западноевропейскую кодировку, ISO вроде, но при зимении на любую другую менялся только шрифт и не более, сами буквы оставались те же. отправка была корректна всегда, о чём вроде писал. хотя куда смотреть апосля функции mail - не знаю. с приёмом, собственно, вот этот вопрос и был: куда смотреть, чтобы увидеть? в том же оутлуке переклацал все закладки, нашёл одну графу "заголовки", но там всегда было пусто. у корректных и не корректных писем сказки об идеальном учении. как правильно делать лабораторные мы допёрли сами только к 4-ому курсу. ни в школе, ни в вузе до этого никто вразумительно не объяснял. нате методичку - читайте, выполняйте |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
MS Outlook, к сожалению, самый неудачный из всех возможных клиентов. Полный источник письма он не показывает. Но хотя бы заголовки в свойствах письма посмотреть можно.
Имеет смысл настроить на том же компе Outlook Express для тестов - там можно смотреть исходник письма целиком. при чем здесь "отправка корректна?" речь не идет о бессмысленной циферке, которую возвращает mail. речь идет о формате отправляемого послания. просто посмотреть - что там накодировалось в итоге, какой текст уходит в белый свет? об этом был смысл моего повествования: мы пишем тонны пхп кода, но очень слабо представляем себе, какой он должен выдавать результат. |
|||
|
||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
закрой глаза и представь, что ты в невесомости. если сумеешь сконцентрироваться на дыхании и представить, что тебя покачивает на волнах - то очень быстро успокоишься нету. из-под оутлука ничего увидеть не смог. а где искать на компе - не знаю.
воооот, как же это просто сделать? через ob_* всякие?
есть такое. но не спросил бы, точно бы ничего не узнал. правда, пока я всё равно ничего не узнал Это сообщение отредактировал(а) skyboy - 20.1.2010, 19:55 |
||||
|
|||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Всегда кодируйте заголовки (Subject, From, etc) при помощи Quoted-Printable или Base64 (первое предпочтительнее). Проще всего это сделать при помощи mb_encode_mimeheader() или iconv_mime_encode(). Так-же не забывайте про заголовок Content-Transfer-Encoding, в вашем случае он будет иметь значение 8bit. И если у вас нет возможности поставить нормальный почтовый клиент, что бы посмотреть оригинальный текст письма, то воспользуйтесь http://php.net/imap Это сообщение отредактировал(а) sTa1kEr - 20.1.2010, 16:54 |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
нет, текст того что я насобирал перед вставкой в mail(), понятное дело смотрел. и было там всё хорошо (в смысле, как обычно). я так понял, Ипатьев говорил о прочтении того, что исходит от сервера после исполнения функции mail(). это как посмотреть? Это сообщение отредактировал(а) skyboy - 20.1.2010, 19:54 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
|
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
А после исполнения mail() ничего интересного не происходит (если только не включен mbstring.overload ), все данные, как контент, так и заголовки mail() просто скармливает sendmail'у. Но если очень-очень интересно, то посмотреть можно. Для этого достаточно написать простенький скрипт, который будет просто читать данные из STDIN и писать их в файл. И прописать путь к этому скрипту в sendmail_path Это сообщение отредактировал(а) sTa1kEr - 21.1.2010, 00:32 |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
тогда я не понимаю о чём шла речь. там ведь (в этих двух функциях) и прятаться то нечему. адрес да пару строк обычного текста. получается проверил и со стороны передачи и со стороны приёма (насколько позволяли возможности) значит, будем поочереди отключать заголовки, смотреть, что вызывает отрицательную реакцию |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
||||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
полученный я уже говорил - оутлук ничего не показывает, а кракозябры показал
отправленный нарою завтра |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |