|
|
|
| Поставил Дэнвер-3 - все классно но с отправкой писем небольшой глюк.
Письма скриптами отправляют ся нормально. Но когда открываю их почтовой программой.
Такое письмо (исходный текст):
X-Sendmail-Cmdline: sendmail.pl -t -i
To: t@mail.ru
Subject: Тема
From: mail@mail.ru
X-Mailer: PHP/5.2.4
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="b724ef771d228bed226f1fb47a0130799"
--b724ef771d228bed226f1fb47a0130799
Content-Type: text/plain; charset="windows-1251"
Content-Transfer-Encoding: 8bit
Здравствуйте, Иван Иванович!
--b724ef771d228bed226f1fb47a0130799--
|
в почтовой программе выглядит так (сообщение):
Здравствуйте, Иван Иванович!
--b724ef771d228bed226f1fb47a0130799-
|
При этом заголовки Кому и Откуда не отображаются.
Ковырялся ковырялся. Открыл исходный файл письма редактором AkelPad, внизу, в статус строке вижу надпись Unix. Делаю "Правка" -> "Фотмат новой строки"->"DOS/Windows". Сохраняю. Потом открываю это письмо почтовой программой и все зашибись.
Значит дело в формате новой строки. Но в скрипте формат новой строки: "\r\n".
Все скрипты, который отправляют почту хорошо работают на Денвере-2 и на хостинге. Письма приходят в хорошо читаемом виде.
Где искать настройку этого глюка? Может кде в конфигурайционном файле че-нибудь надо подправить? | |
|
|
|
|
|
|
|
для: tAleks
(26.01.2008 в 19:19)
| | Я тоже поставил Денвер-3 - проблем с почтой нет. Вы скорее всего не верно формируете почтовое сообщение. | |
|
|
|
|
|
|
|
для: sim5
(27.01.2008 в 05:33)
| | Ну я же привел пример почтового сообщения. Что в нем не верного?
И плюс ко всему, на Денвере-2 все работает классно. И на хостинге все работатет классно. | |
|
|
|
|
|
|
|
для: tAleks
(27.01.2008 в 18:40)
| | Что вы привели? Вы как почту отправляете и как формируете само отправление? В общих чертах:
Любая из частей письма может иметь Content-type: multipart, а значит сообщение представляет собой подобие древовидной структуры. Это гарантия, что каждая из частей письма займет правильное место. Пример структуры письма, имеющего текстовую и HTML версию (HTML с картинками), а так же вложенный документ PDF:
Content-type: multipart/mixed
Content-type: multipart/alternative
Content-type: text/plain
Content-type: multipart/related
Content-type: text/html
Content-type: image/jpeg
Content-type: image/jpeg
Content-type: application/pdf
|
Одна из часто возникающих проблем при отправке почты - это формирование заголовка письма. Для отправки письма в кодировке win-1251, нужно перевести ее в понятный для почтовых клиентов koi8 заголовок, например (по-раздельно для наглядности)
<?php
//это отправитель
$sender = "=?windows-1251?B?" . base64_encode(quotesDel($name)) . "?= <" .$mail. ">";
//это тема
$subj = "=?windows-1251?b?" . base64_encode($subj) . "?=";
//а это уже заголовки
$headers = "From: ".$sender."\n";
$headers .= "Subject: ".$subj."\n";
..........
|
Пример - от участников форума имеющих русский ник, почта от форума приходит с заголовком в "крякозябриках".
Ну и другие моменты, которые можно узнать на http://www.php.net/manual/ru/. Я уже сказал, у меня тоже сейчас Денвер-3 и проблем не наблюдаю. Дело не Денвере-3. | |
|
|
|
|
|
|
|
для: sim5
(27.01.2008 в 19:35)
| | >Что вы привели?
Я привел, если Вы не заметили, конкретный исходный текст письма, который был сгенерирован скриптом, текст взят из файла из папки денвера: C:\WebServers\tmp\!sendmail\2008-01-27_00-26-40.eml
X-Sendmail-Cmdline: sendmail.pl -t -i
To: t@mail.ru
Subject: Тема
From: mail@mail.ru
X-Mailer: PHP/5.2.4
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="b724ef771d228bed226f1fb47a0130799"
--b724ef771d228bed226f1fb47a0130799
Content-Type: text/plain; charset="windows-1251"
Content-Transfer-Encoding: 8bit
Здравствуйте, Иван Иванович!
--b724ef771d228bed226f1fb47a0130799--
|
Что, конкретно в этом примере не правлиьного?
> Я уже сказал, у меня тоже сейчас Денвер-3 и проблем не наблюдаю. Дело не Денвере-3.
А в чем дело, если на денвере-2 этот же скрипт отправляет это же письмо, и оно читается нормально? - это рас.
У денвера есть тест почты, скрипт входящий в состав самого Денвера-3, Проверка отладочной заглушки для sendmail : http://localhost/Tests/sendmail/index.php
Через него отправлю тестовое письмо - проблема та-же.
ПРОБЛЕМА:
В почтовой программе заголовки Кому и Откуда, тема и др. не отображаются.
Открыл исходный файл письма редактором AkelPad, внизу, в статус строке вижу надпись Unix. Делаю "Правка" -> "Фотмат новой строки"->"DOS/Windows". Сохраняю. Потом открываю это письмо почтовой программой и все зашибись. Все заголовки нормально читаются.
Значит, делаю вывод, что дело в формате новой строки. Но в скрипте формат новой строки: "\r\n"
Все скрипты, который отправляют почту хорошо работают на Денвере-2 и на хостинге. Письма приходят в хорошо читаемом виде.
Возможно да, Вы правы что дело не в Денвере-3, а в настройках php.ini, или чего-ниудь другого. Может быть ваш денвер стоит на др. операционке. У меня на XP.
Кто может, помогите разобраться. | |
|
|
|
|
|
|
|
для: tAleks
(27.01.2008 в 21:42)
| | Нет. У меня не эксклюзив Денвера, а такой же как и у вас, скачанный от туда же от куда и вы его закачивали, и php.ini в нем уже настроен. Операционка таже - ХР. Я знаю про заглушку sendmail, а если говорить на уровне отчетов, то можно посмотреть здесь:
http://people.dsv.su.se/~jpalme/ietf/mhtml-test/mhtml.html. | |
|
|
|
|
|
|
|
для: tAleks
(27.01.2008 в 21:42)
| | [много букв вырезал лично]
показывайте исходный код php.
Дело на 90% в терминаторах строки. Впрочем, Вы сами это уже выяснили. | |
|
|
|
|
|
|
|
для: Trianon
(28.01.2008 в 02:41)
| | Сделал пример по проще.
Исходный код PHP:
<?php
mail('test@mail.ru', 'Тема сообщения', 'Тело сообщения');
?>
|
В прицеке, скриншот сообщения при просмотре его программой The Bat. | |
|
|
|
|
|
|
|
для: Trianon
(28.01.2008 в 02:41)
| | В этой прицепке, скриншот того же сообщения при открытии файла прогарммой AkelPad. | |
|
|
|
|
|
|
|
для: tAleks
(28.01.2008 в 13:06)
| | Ну и при чем тут Денвер? А вот как это выглядит в Outlook. | |
|
|
|
|
|
|
|
для: sim5
(28.01.2008 в 14:37)
| | Денвер, тут возможно и не причем. Я денверу ничего не предъявляю. Я спрашиваю КАК ЭТО ИСПРАВИТЬ? | |
|
|
|
|
|
|
|
|
для: sim5
(28.01.2008 в 15:37)
| | Ну и где тут не стандарт?
<?php
mail('test@mail.ru', 'Тема сообщения', 'Тело сообщения');
?>
|
Вы можете привести кусок кода, для примера, который по вашему был бы в соответствии со стандартом? Я его проверю на свой машине. Более чем уверен что результат будет такой же.
Буду благодарен за помощь! | |
|
|
|
|
|
|
|
для: tAleks
(28.01.2008 в 17:14)
| | Стандарты - это верхняя ссылка, нижняя - это мануал по функции mail(), где есть и примеры, но если от меня, то: автор: sim5 (27.01.2008 в 19:35). Там по крайней мере показано как нужно передать тему письма и отправителя, например: Петя <as@as.as>
Дело в том, что вы должны указать в заголовке коодировку почтового сообщения, но она не будет действовать на From и Subject. Читайте, ньюансов много, простой пример из практики: с сайта N при отправке почтовых сообщений не было никаких проблем. Затем адресаты mail.ru иногда стали не получать письма, а затем и вовсе их перестали получать. Благодаря службе поддержки хоста выяснилось, что mail.ru не принимал эти письма, считая их за 100% спам. На вопрос mail.ru и предоставление им отправляемого содержимого (по их просьбе) - ответил молчанием. И наверное правильно сделали, просто тогда мне пришлось прочитать массу документов и прочей информации, коей в учебниках не всегда есть.
Читайте, поверьте - это будет для вас очень полезным. | |
|
|
|
|
|
|
|
для: sim5
(28.01.2008 в 17:32)
| | Ув. sim5, причем тут все то что вы говорите, если проблема, как мы выяснили в терминаторах строк?
Проблема не в том, что тело сообщения формируется не правильно, а в том, что по каким-то неизвестным мне причинам, терминаторы строки с "\r\n" меняются на "\r". И это происходит точно не в скрипте:
<?php
mail('test@mail.ru', 'Тема сообщения', 'Тело сообщения');
?> | |
|
|
|
|
|
|
|
для: tAleks
(28.01.2008 в 17:49)
| | И этой проблемы у меня нет, да и пишу я с учетом Unix - \n.
PS. Специально попробовал \r\n ще раз, да есть огрех, но только с одной строкой происходит, а именно в теле письма отображается:)
Content-Transfer-Encoding: 8bitr\n
Надо вообще прогнать просто текст с переводом строк в Денвер-3, и если там подобного бага не будет, то у меня давно "руки чешутся" заменить sendmail заглушку, на взятую из Денвер-2. Не потому, что она имеет этот баг, а потому, что она в трее "сидит", и когда забываешь остановить сервер при выходе из системы, приходится читать напоминание о "Завершение программы...", достало уже это.) | |
|
|
|
|
|
|
|
для: sim5
(28.01.2008 в 14:37)
| | А причем тут кодировка? Заголовки то в вашем Оутлуке есть! И текст сообщения есть! | |
|
|
|
|
|
|
|
для: tAleks
(26.01.2008 в 19:19)
| | ВСЕ! Разобрался! Проблема была в Денвере-3!
Написал на форум Денвера, там помогли.
Проблема решается так:
замените в denwer\tools\sendmail\common.pm строки 58-59
print F "$x\n" if $x;
print F $mail;
|
на
print F "$x\r\n" if $x;
$mail =~s/(?<!\r)\n/\r\n/sg;
print F $mail;
|
Всем спасибо! | |
|
|
|