WebScript.Ru
C:\   главная  ::   о сайте  ::  каталог скриптов  ::  гнездо  ::  форум  ::   авторам  :: Новостройки ::   ХОСТИНГ  ::

|| разделы::
|| поиск по сайту::

|| реклама::
|| новости почтой::
Рассылки Subscribe.Ru ::



Новости сайта WebScript.Ru
Популярные статьи

Hot 5 Stories

|| рекомендуем::




Отправка писем через PHP


Прислал: dina [ 08.06.2001 @ 07:44 ]
Раздел:: [ Статьи по PHP ]


Как отправить письмо через PHP, используя формы, и как при этом устранить возникающие проблемы с кодировкой?

Рассмотрим на простом примере, как отправить вопрос через формы на сайте. У нас будет 3 поля для ввода:
Ваше имя:
* E-mail:
* Вопрос:
Причем "Ваше имя" не является обязательным параметром.
Для простоты и удобства разместим форму и код прогараммы в одном файле. Важно указать кодировку страницы (windows-1251), чтобы далее не возникало проблем с перекодированием из win в koi (ниже)
Итак, приступим. Начало документа стандартное:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Отправка письма</title>
    <meta content="text/html;charset=windows-1251" http2-equiv="Content-Type">
</head>
<body>
Далее идет 2 логические части:
1 - вывод формы
2 - обработка формы и отправка письма

Вначале идет вывод формы.

Для удобства в начале определяем e-mail через переменную $mailto, на который будет отсылаться письмо из формы.
Далее мы определяем, была ли нажата кнопка "отправить".
В конце формы имеется кнопка "отправить", она имеет аттрибуты name="ok" и value="отправить". После нажатия на нее переменная $ok будет иметь значение "отправить". Если кнопка не нажата, то переменная не определена.
Таким образом, выражение if (empty($ok)) означает буквально "если кнопка отправить не была нажата". Функция empty() возвращает true, если переменная не определена, содержит 0 или пустоту.
<?
$mailto="name@server.ru";
if (empty($ok))
{
?>
Далее идет вывод формы, если выполнено предыдущее условие if (empty($ok)).
Переменная $PHP_SELF означает, что обработку формы производит текущий файл, т.е. тот же, на кот. расположена форма.
    <h3>Отправьте вопрос автору сайта</h3>
    Поля, отмеченные (*), обязательны для заполнения.
    <br><br>
    <form action="<?echo $PHP_SELF;?>" method="post">
    <table>
    <tr>
        <td>Ваше имя:</td>
        <td> <input type="text" name="username" size="30" maxlength="20"></td>
    </tr>
    <tr>
        <td>* E-mail:</td>
        <td><input type="text" name="mailfrom" size="30" maxlength="50"></td>
    </tr>
    <tr>
        <td>* Вопрос:</td>
        <td><textarea cols="50" rows="10" name="question"></textarea></td>
    </tr>
    </table>
    <input type="submit" name="ok" value="отправить">
    </form>
В противном случае, т.е. если была нажата кнопка, идет обработка формы и отправка письма
<?
}
else
{
Далее идет проверка на корректность заполнения поля "E-mail". Любители ругулярных выражений эту проверку поймут. Для остальных немного поясню:
Подразумевается, что e-mail должен быть такого вида:
слово@слово.слово
При этом слово может состоять из всех букв латинского алфавита и цифр и точка может быть не одна. (например слово@слово.слово.слово)
[a-z,0-9] - означает "любая буква латинского алфавита или цифра"
+ - означает, что [a-z,0-9] может встречаться 1 или более раз.

Если введен неправильный e-mail, то в переменную $error записывается ругательное сообщение.
    if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $mailfrom))
    {
    $error = "Не верно заполнено поле: <b>E-mail</b><br>";
    }
Если поле "Вопрос" не заполнили, то к переменно $error добавляем еше одно ругательство:
    if (empty($question))
    {
        $error .= "Не заполнено поле: <b>Ваш вопрос</b><br>
";
    }
Если переменная $error не пустая, то мы ее выводим на экран и немедленно прекращаем дальнейшую обработку с помощью exit
    if ($error)
    {
        echo $error;
        echo "<br><a href=\"javascript:history.go(-1)\" 
class=\"text\">Вернуться назад</a>";         exit;     }
Ну а если таки $error осталась пустой и exit не сработал, то можно приступать к отправке письма, т.е. главной цели всего этого мероприятия...
Сформируем тему и тело сообщения:
    $subject="Вопрос от $mailfrom";
    $body="Имя:
$username

E-mail:
$mailfrom


Комментарии: $question";
А теперь самое главное, чтоб потом можно было прочитать письмо "по-русски" :) Функция convert_cyr_string перекодирует строку из win в koi (w-win, k-koi) Это необходимо, т.к. все почтовые клиенты по дефалту принимают письма в koi. А у нас вверху страницы стоит charset=windows-1251, поэтому функция грамотно переводит из win в koi Затем с помощью функции mail отправляется письмо на $mailto, указанный в начале файла.
    $body=convert_cyr_string (stripslashes($body),w,k);
    $subject=convert_cyr_string (stripslashes($subject),w,k);
    $sucess = mail($mailto, $subject, $body, 
"From: $email X-Mailer: PHP/" . phpversion());
Ну и самое приятное... Если письмо успешно отправлено, то выводим благодарственную надпись и предлагаем вернуться..
    if ($sucess)
    {
        echo "Спасибо. Ваш вопрос отправлен.<br><br>";
        echo "<a href=\"javascript:history.go(-1)\" 
class=\"text\">Вернуться назад</a>";     }
Стандартный конец..
}
?>

</body>
</html>
P.S. Как наверно понял читатель, нужно выделить и скопировать все зеленые блоки в один файл по порядку и запустить его на сервере
Весь код является полностью проверенным и рабочим.


 :::::  Yuri пишет 09.06.2001 @ 04:59 
convert_cyr_string (stripslashes($body),w,k) - w и k должны быть типа string, поэтому будет работать только при convert_cyr_string (stripslashes($body),"w","k")
 :::::  dina пишет 09.06.2001 @ 05:57 
Функция convert_cyr_string (stripslashes($body),w,k) работает с w и k без ковычек, в кавычках там нет необходимости, т.к. 2-ой и 3-ий аргумент этой функции авт-ки преобразуется в строку , потому как там ничего кроме строк не может быть:
k - koi8-r,
w - windows-1251 ,
i - iso8859-5,
a - x-cp866,
d - x-cp866,
m - x-mac-cyrillic

более подробно о функции convert_cyr_string смотрите: http://www.php.net/manual/en/function.convert-cyr-string.php
 :::::  Igor пишет 10.06.2001 @ 02:19 
Странно, все скопировал и запустил, но не работает :( Пишет - ошибка парсера на строчках где печатается ссылка "вернуться назад", я их удалил, но пишет ошибка парсера в строчке завершающего тега </html>. Не понял в чем дело. Запускал как на компе (Апач + ПХП4 под виндой) так и на сервере (Апач+ПХП4 под юникс) Спецы, посмотрите, может где синтаксис неверный ? А то я в ПХП мало пока что разбираюсь.
 :::::  Алексей пишет 10.06.2001 @ 18:37 
А как отправить письмо с запросом о подтверждении о доставке? Помогите! Очень надо!
 :::::  s/m пишет 11.06.2001 @ 04:12 
Про ошибки:
такая строка работать не будет .
echo "<a href="javascript:history.go(-1)" class="text">Вернуться назад</a>";
надо так:
echo "<a href=\"javascript:history.go(-1)\" class=\"text\">Вернуться назад</a>";
Ну и естественно такие штуки надо поправить везде по тексту кода.
Кроме того, как я подозреваю, тот товарищ что писал "Странно, все скопировал и запустил, но не работает :( " , не убрал лишние переводы строк.
Пожелания к автору текста: не испробовав - не говори что работает.
Кроме того, если уж говорите, что достаточно скопировать и заработает - кладите листинги прямо в <textarea>.
Меньше гиморроя будет потом объяснять что как и где надо было поправить чтобы все работало.
 :::::  NAS пишет 11.06.2001 @ 07:18 
Извиняюсь перед автором и читателями, но это мой скрипт публикаций порезал слеши. Сейчас я всё вроде поправил. А вообще этот скрипт недавно добавлен в каталог.
 :::::  Igor пишет 12.06.2001 @ 13:36 
Тот товарищ что написал " Странно ..." несмотря на недельное знакомство с ПХП (куда ж мне торопиться то?) переделал нафиг этот скрипт немного и он заработал (мне еще поле емайл кому отправлять нужно было), немного криовато конечно но всетаки лучше чем ничего ;) А кодов ВК при копировании не было обнаружено, товарищь программер! :) Тэнкс за хелп!
-----
З.Ы. Народ, кто знает как отправлять файлы на мыло, после того как загрузишь их во временную директорию? С помощью функции "открыть процесс" popen(путь до сендм,имя файла)? Хелп плз... скриптик нужен. В установленном ПХП4 есть такие классы, какой использовать?
 :::::  dina пишет 13.06.2001 @ 10:44 
Алексей !

отправку письма с запросом о подтверждении о доставке можно легко переделать из этого скрипта, заменив поля: Ваше имя,* E-mail,* Вопрос на нужные вам или добавить новые... аналогия полная.


s/m !

- лишние переводы строк не "мешают" скрипту правильно работать. Там ведь каждая строка точкой с запятой отделяется.
- как пишет NAS, слеши пропали при пересылке скрипта. Скрипт точно рабочий полностью (на PHP4 точно), я специально его скопировала по частям с окна и запустила еще раз.. все пашет

Igor !

А что значит:
А кодов ВК при копировании не было обнаружено
???
 :::::  Igor пишет 14.06.2001 @ 14:27 
Igor !
А что значит:
А кодов ВК при копировании не было обнаружено
???
------
А я думал что товарищ программер имеет ввиду, что я при копировании и вставке вляпал скрипт вместе с пустыми строками и поэтому он и не работал (так он и на самом деле не работал, даже когда я ошибочные строки удалял и пустые тоже кстати, я его потом разобрал на запчасти и он заработал) Но теперь все прекрасно работает. Кстати переводит все в КОИ8-Р!
А я и не знал что на ПХП можно так делать:
<? если ()
{
?>
тра-тата-ля-ля-ля ХТМЛ...
<?
}
иначе ()
ляляля скрипт
?>
Это типа выполнить ХТМЛ как функцию. Думал из-за этого глюки....а оказывается это работает, классно. Только как вот аттачменты отправлять? Напрямую через сендмайл или СМТП ? Кто знает?

 :::::  NL пишет 17.06.2001 @ 15:35 
А у меня ещё сложнее... Вроде всё как надо, а он мне говорит, что коннекта нет. Подозреваю в грехах свой Apache, который не настроен под прокси (я через него в И-нет выхожу).. Как же его настроить?
 :::::  dina пишет 19.06.2001 @ 01:54 
небольшое улучшение: в мэйлах еще могут быть

. -_ (в именах)
-_ (в доменах)

поэтому просто добавим эти символы в проверке:

if(!preg_match("/^([a-z,0-9,_,\-,\.])+\@([a-z,0-9,_,\-])+(\.([a-z,0-9])+)+$/",$mailfrom))
 :::::  stron пишет 24.06.2001 @ 14:22 
Да, действительно, никто не подскажет как притачить файл и не один, и чтоб вся эта фигня пошла куда надо и как надо : ) А точнее сделать мини рассылку, как добавить и считывать с простого файла адреса понятно, как сделать цикл чтоб отправлял по всем перечисленным адресам тоже понятно, но как сделдать чтоб отправлял с притаченными файлами....может кто мудрый подскажет?
 :::::  Igor пишет 01.07.2001 @ 07:56 
Кому интересно как отправлять письма с аттачем, читайте здесь http://php.spb.ru/php/mail.html
Там еще много всяких интересных фичей описано.
 :::::  Mike пишет 31.07.2001 @ 03:02 
Что-то ничего не конвертируется...
 :::::  Vlad пишет 08.08.2001 @ 05:51 
Лично у меня на mail.yandex.ru ничего читать не хотело, по я в заголовок не вставил Content-Type: text слеш html; charset=koi8-r
 :::::  kostya пишет 15.08.2001 @ 11:59 
Я долго искал эту инфу, в книжке по ПХП полная лажа - вообще не работает.
По этому скрипту все в порядке.
 :::::  Euegene пишет 16.08.2001 @ 14:15 
Хорошая литература...Очень помогла... Благодарен чрезмерно..
 :::::  Tornado пишет 03.09.2001 @ 18:58 
Спасибо большое за статью. Очень помогла.
 :::::  Наталья пишет 05.10.2001 @ 16:40 
Спасибо большре. Это именно то, что я искала. Правда я еще не проверяла :)))
 :::::  Natasha пишет 17.10.2001 @ 03:53 
Была еще ошибка:
Надо не
<a href="javascript:history.go(-1)" class="text">Вернуться назад</a>
а:

--------------------------------------------------------------------
There are several ways to do this.

You can create a hyperlink to an image or text using the following code:

<a href="Javascript:history.go(-1)">Back</a>
Note: (-1) means go back one page. So, for example (-2) would be go back two pages.

or:

You can use:
<a href='javascript:history.back()'>Back</a>

For "Buttons" you can use:
<form method="POST" action="Javascript:history.go(-1)">
<input type="submit" value="Back" name="Back">
</form>
--------------------------------------------------------------------------

 :::::  dina пишет 17.10.2001 @ 18:59 
Natasha, объясни, пожалуйста, в чем же разница между
<a href="javascript:history.go(-1)" class="text">Вернуться назад</a>
и
<a href="Javascript:history.go(-1)">Back</a>

в чем же тут конкретно ошибка?
 :::::  SunnyCurls пишет 17.12.2001 @ 14:14 
Ну нифига сколько тут девушек появилось ;)
 :::::  alex пишет 05.01.2002 @ 05:43 
Dina! Вам бы не скрипты писать, а в песочнице ковырятся. Из всех присутствующих здесь ламеров только один (Vlad) умудрился заметить, что ваш скриптец сильно глючит в кодировкой...
 :::::  Daan пишет 22.01.2002 @ 20:09 
А вы девушки действительно немного поковыряйтесь в песочнице, да о стилях почитайте...
 :::::  Gary пишет 21.04.2002 @ 15:54 
четвёртый аргумент фунции mail() можно писать так:
"From: $email\nContent-Type: text/html; charset=windows-1251"
и тогда можно не ковертировать письмо в КОИ-8. Почтовый клиент автоматом поставит правильную кодировку.

 :::::  mj пишет 26.04.2002 @ 05:31 
При отпраке через Mail с wallst.ru и webservis.ru письма приходят через сутки (в лучшем случае), можно подумать там модератор сидит и всё перечитывает...
Лучше отправлять через сокеты.
http://php.spb.ru/php/mail.html
 :::::  Ruslan пишет 20.11.2002 @ 17:45 
Здравствуйте!
Я по поводу отправки данных из почты на емайл
Сделал все как описано, но пишет, что сообщение не было отправлено.
У меня стоит апач, пчп4.... Может где-то надо настройки поменять.
Уже столько вариантов перепробовал..ни один не работает...подскажите пожалуйста, ак заставить ф-ию mail заработать
 :::::  berez пишет 02.12.2002 @ 12:03 
помогите!!!
не работает почему-то?????
выдает отправка письма!!!!
и все !!! ни фига ен отправляет????!!!
 :::::  Doctor[X] пишет 07.02.2003 @ 18:00 
это всё из-за

"From: $email
X-Mailer: PHP/" . phpversion());

у меня тоже на этой фигне ошибку показывает :(
 :::::  helen пишет 16.02.2003 @ 17:53 
как сделать, чтобы после отправки письма на странице появлялось не "назад", а та же форма, которую заполняли, и еще, может вы напишите как сделат, чтобы это было как подписка на рассылку, т.е. просто поле E-mail и кнопка "Подписаться".
Буду признательна)
 :::::  Doctor[X] пишет 17.02.2003 @ 17:00 
2 helen
просто!
если ты этот скрипт вставишь в шаблон своей странички. то уже по навигации можно будет пыполсти на другую страничку.!


я думалд что у меня нерабюотет :( а окозалось что я се smtp а апаче не прописал :(

2 Natasha & dina
разници в принцепе нет :)
 :::::  boogus пишет 04.03.2003 @ 00:37 
Люди!! а как отправить приклрепленный файл, ну допустим ЗИПовский???
 :::::  nestor пишет 16.04.2003 @ 00:12 
Умница dina. Спасибо за ликбез, мне, бездарю, очнь помогло.
 :::::  nikneim пишет 03.05.2003 @ 20:13 
А как в отправляемое письмо добавлять изображения (например, отсылать открытки)?
И как отправить прикрепленный файл?
И ещё, можно отпралять страницы целиком?
 :::::  Lex пишет 12.05.2003 @ 06:35 
При запуске на Apache+PHP4 всё нормально. Но при нажатии на кнопке пишет что ошибка в неизвестном индетификаторе: PHP_SELF.
Почему?
 :::::  leo пишет 25.06.2003 @ 07:24 
Я новичок в этом, если не трудно, можно скинуть мне на мыло готовый работающий файл, и в каком редакторе лучше с ним работать. Заранее благодарен.
 :::::  mopo3ko пишет 09.07.2003 @ 19:07 
Товарищи, я в ПХП не продвинут, обясните как настроить ПХП и АПАЧ для совместной работы и на каком бесплатном хосте поддерживается ПХП 4 и надоли к себе на своём сайте держать файлы ПХП 4 или где, я в этом ДУБ. Тук-Тук-Тук - слышите...
 :::::  mopo3ko пишет 10.07.2003 @ 01:12 
И ещё сайт в окне IE у меня вышел со странностями, первая ссылка вернуться вовсе не ссылка, а дальше идёт текст ": exist и т.д. почти до конца, не были бы вы столь любезны весь текст скомпановать в textarea и написать в каком расширении должен быть сайт...
 :::::  cat-x пишет 09.08.2003 @ 17:52 
"From: $email\nContent-Type: text/html; charset=windows-1251" однозначно рулит
 :::::  Александр пишет 23.09.2003 @ 16:39 
Вопрос, всё же, остаётся актуальным, знает кто-нибудь или нет?
Как прикрепить файл (например фото) или zip-архив к письму, отправляемому с помощью PHP?
Буду признателен всем, кто ответит на этот вопрос.


 :::::  peter пишет 13.10.2003 @ 07:54 
Вам что делать нечего! О каких-то скриптах спорить? Сидели бы и чай пили... :)
 :::::  Grank пишет 17.10.2003 @ 16:02 
Приятно общаться со "спецами" CSS, а именно alexом и danom, не вникнув в тему уже начинают обижать девушек, если бы вы поротирали свои глаза, то возможно заметили бы что таблица стилей нигде не подключается, поэтому
<a href="javascript:history.go(-1)" class="text">Вернуться назад</a>
и
<a href="Javascript:history.go(-1)">Back</a>
ничем не отличаются, разве что языком....
Так что в другой раз не стоит гнать бред, а если вы такие умные, то оъясняйте что к чему, а не обламывайте...(хотя в этот раз, сами себя обламали :-)))))))))))))))))))))))
 :::::  dina пишет 20.10.2003 @ 10:27 
Коллеги, спасибо всем за отзывы, рады стараться...
class="text" - тут не нужно, просто забыла удалить по ошибке.
 :::::  Riccon пишет 22.10.2003 @ 17:33 
Чё накинулись то? В отличии от екоторых скрипт написан без ошибок
 :::::  andrew пишет 21.11.2003 @ 14:46 
Всем привет!

Я не программер на ПХП, более на иных системных ленгвичах.
Что удивляет, это то девушки атакуют все больше :)
Уже и на пхп мастарами заделались!
Ну удачи в деле.
П.С. Хотя на кой вам это?

:)
 :::::  Andy Resh пишет 25.11.2003 @ 08:18 
Девушки и юноши.... здравствуйте!
Я не новичок, но и не спец, по этому ничего не могу понять!
1) Ваш скртпт правильный!
2) Мной чуть правленный...
3) Письмо НЕ ПРИШЛО!!!
4) Никаких ошибок не пишет, но и "назад" не выводит!
Просто, страница перегружается после "Отправить" и все! НИЧЕГО!!!
 :::::  monarchp пишет 11.01.2004 @ 11:59 
аттачи как добавить.. ?
 :::::  ivan пишет 03.03.2004 @ 01:44 
Добрый день.Вопросик есть.После работы скрипта сообщения на мыло адресата не приходят.Приходят на мыло того, чья учетная запись на этом компьюторе.Что-то типа : пароль инвалид.Чего делать?

"From: $email
X-Mailer: PHP/" . phpversion());- если без этого, а просто
mail($mailto, $subject, $body); тоже не работает - вообще ничего и никуда не приходит.
Чего делать?

 :::::  San пишет 11.03.2004 @ 20:28 
Помогите мне зделать регистрация на моюм сайте на php ПОЖАЛУЙСТА!!!!!!
 :::::  San пишет 11.03.2004 @ 20:29 
Помогите мне сделать регистрацию на мой сайт в php. ПОЖАЛУЙСТА!!!!!!
 :::::  Eugen пишет 16.03.2004 @ 16:46 
Привет Всем !!!

кто может подсказать, как сделать ленту новостей с архивом, и с управляемым контентом
 :::::  IRC_alexx пишет 13.04.2004 @ 02:17 
уважаемые люди если у вас есть IRC соединение с IRC серверами
то предлагаем вам Совершенно Новый IRC сервер -(Новосибирский)
irc.novosib.net.ru порт 6667 Официальный канал сервера #novosib
Также этот сервер доступен совершенно для всех! Желаем удачи и успехов!
 :::::  baycity пишет 25.06.2004 @ 11:46 
Вопрос от младенца.

Если я правильно понимаю, то $PHP_SELF не даст нужного результата, если скрипт расположен в .tpl-файле?
Если я неправ, прошу поправить.
А если прав, прошу подсказать начинающему, можно ли реализовать такое действие в этом случае и как.

Заранее спасибо.
 :::::  Александр пишет 25.11.2004 @ 02:36 
А если вот у кого бесплатный хостинг без поддержки скриптов?
Поискал в сети и нашел выход: http://www.stealsman.lytkarino.ru/sendmail.php
Здесь все ясно и понятно написано. Это если кому может понадобиться.
 :::::  oEN пишет 22.06.2006 @ 21:22 
бля....прочитайте всё это за меня и всё остальное....я запарился...жарко и надоело!Лучше бы на си писать начал...хотя тему пишите, то вот насчёт валлста, там правда через сутки приходит мэл, а то там хостинг хорошой - не обламывайте....
 :::::  Roman пишет 24.07.2006 @ 00:52 
это всё из-за

"From: $email
X-Mailer: PHP/" . phpversion());

у меня тоже на этой фигне ошибку показывает :(
________________________________________
да, вы $email замените на свой почтовый адрес, все будет!..


Я сделал так:
---------------------------
$mailtext="Текст письма";
$mailtext=convert_cyr_string(stripslashes($mailtext),'w','k');

$mailsubject="Тема письма";
$mailsubject=convert_cyr_string(stripslashes($mailsubject),'w','k');

$headers="From: myemail@mail.ru
X-Mailer: PHP/".phpversion()."
Reply-to: myemail@mail.ru
Return-Path: myemail@mail.ru
Message-ID: ".md5(uniqid(time()))."@site.ru
MIME-Version: 1.0
Content-type: text/plain; charset=koi8-r
Content-transfer-encoding: 8bit
Date: ".date('r',time())."
X-Priority: 0
X-MSMail-Priority: Normal
X-Mailer: Microsoft Office Outlook, Build 11.0.5510
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441
X-Sender: myemail@mail.ru";

mail($email, $mailsubject, $mailtext, $headers);
------------------------------------------
эти заголовки (можно еще и другие навтыкать :-) ) не дадут серверу пометить письмо как спам - т.е. больше шансов того, что письмо придет...
Естест-но, замените в исходнике адреса на ваши (можно воткнуть любой!!!)
 :::::  Balbess пишет 24.10.2006 @ 14:44 
Я пользуюсь редактором для написания скриптов и HTML
так вот

после строки class=\"text\">Вернуться назад</a>"; перед функцией exit
возникает ощущения, что редактор воспринимает всё написанное как обычный текст и так до самого конца.... соотвецтвенно весь этот блок у меня под формой отправки как обычный текст с гиперссылками...
подскажите что я проглядел... а то уже второй день сижу ничего понять не могу...
 :::::  Vlad пишет 22.01.2007 @ 15:40 
Прекрасно работает с первого предъявления. Умница
 :::::  More пишет 07.02.2007 @ 15:39 
Таже беда после формы на страничке появился текст

Вернуться назад"; exit; } $subject="Вопрос от $mailfrom"; $body="Имя: $username E-mail: $mailfrom Комментарии: $question"; $body=convert_cyr_string (stripslashes($body),w,k); $subject=convert_cyr_string (stripslashes($subject),w,k); $sucess = mail($mailto, $subject, $body, "From: $email X-Mailer: PHP/" . phpversion()); if ($sucess) { echo "Спасибо. Ваш вопрос отправлен.

"; echo "Вернуться назад"; } } ?>

кто понял почему?
Balbess а ты разобрался?
 :::::  Arsen пишет 14.02.2007 @ 16:52 
dina Спасбо большое все очень просто только, что загрузил все прекрасно работает!

Что надо добавить в скрипте, чтоб в Outlooke в поле ОТ указывался, бы адрес эл.почты
Спасибо еше раз
 :::::  Kostya пишет 21.07.2007 @ 09:51 
Помогите плз кто чем может. Пользуюсь полем textarea для отправки вопроса из формы на мэйл. Так вот введенный в это поле текст вопроса произвольно режется. Метод отправки пост. Может причина на стадии конвертирования кодировки?
 :::::  zvr пишет 21.08.2007 @ 19:58 
А у меня почему-то ничего не работало, пока не дописал:
$ok=$_POST['ok'];
К чему бы это? Может скажет кто?
 :::::  dina пишет 20.09.2007 @ 17:54 
потому что у тебя выключен параметр register_globals в php
 :::::  Горыныч пишет 02.10.2007 @ 12:57 
Спасибо за скрипт, заработал с первого раза, далее немного адаптировал под себя! 8-)
 :::::  володя пишет 28.10.2007 @ 04:24 
подскажите как можно отправить много писем через мой локальный компьютер ?
--------------------------------------------------------------------------------------------------------

 :::::  Арсений пишет 28.11.2007 @ 23:07 
Спасибо! Скрипт очень пригодился.
 :::::  Victor пишет 02.02.2008 @ 09:22 
Ищу в сети скрипт. Постоянно натыкаюсь на эту статью. Скрипт то битый, не рабтает.
 :::::  PHP'шкин пишет 07.03.2008 @ 00:37 
Скрипту нужна минимильная обработка, читайте комменты и будем вам:)
 :::::  PHP'шкин пишет 07.03.2008 @ 11:39 
Хотя хз рабочий он или нет - я вот письмо уже два дня жду.
 :::::  PHP'шкин пишет 10.03.2008 @ 14:34 
В скрипте несколько промахов:
1. Вместо if (empty($ok)) пишем, например, if (!isset( $_GET['send'])), для этого в атрибуте action формы заменяем PHP_SELF на "?send".
2. При register_globals_of, что очень часто имеет место, в самом начале скрипта определяем переменные:
$username = $_POST['username'];
$mailfrom = $_POST['mailfrom'];
$question = $_POST['question'];
3. Сделать правильные заголовки - где-то в комментах они были написаны, поэтому останавливаться не буду. Всем удачи.
 :::::  tommy пишет 27.03.2008 @ 00:15 
как через сокеты почту отправить?
 :::::  max пишет 01.04.2008 @ 09:09 
Напишите подробнее про кодировку, а то письмо отправляются а вот кодировка не та...
 :::::  Рома пишет 18.05.2009 @ 02:04 
вот эта ссылка помогает понять что с кодировками http://2cyr.com/decode/?lang=ru
и функция iconv помогает менять на нужную кодировку $body=iconv('UTF-8', 'windows-1251', $body);
 :::::  Илья пишет 19.07.2009 @ 00:17 
Люди плиц пришлите пожалуйста на ilyadz@mail.ru полный текст РАБОЧЕЙ формы отправки писем с сайта!!! И подскажите я смогу проверить работоспособность скрипта с бесплатного хостинга, поддерживающего ПХП такие как www.wallst.ru или www.webservis.ru.. ЗАРАНЕЕ ОГРОМНЕЙШЕЕ СПАСИБО!!!
 :::::  Александр пишет 17.08.2009 @ 02:47 

С моего сайта. Всё работает.


zakaz.php

<form action="zakaz_obrab.php" method="post" name="form_com">
<p class='dob_comm'><label>Ваше имя:<BR></label>
<input name="author" type="text" size="30" maxlength="40"></p>
<p class='dob_comm'><label>Ваш телефон:<BR></label>
<input name="telefon" type="text" size="30" maxlength="40"></p>
<p class='dob_comm'><label>Удобное время звонка:<BR></label>
<input name="time" type="text" size="30" maxlength="40"></p>
<p class='dob_comm'><label>Комментариии:<BR>
<textarea name="text" cols="50" rows="4"></textarea></label></p>
<p><input name="sub_com" type="submit" value="Отправить" class="button" title="Нажмите, чтобы отправить"></p>
</form>


zakaz_obrab.php

<?php
if (isset($_POST['author'])) {$author = $_POST['author'];}
if (isset($_POST['telefon'])) {$telefon = $_POST['telefon'];}
if (isset($_POST['time'])) {$time = $_POST['time'];}
if (isset($_POST['text'])) {$text = $_POST['text'];}
if (isset($_POST['sub_com'])) {$sub_com = $_POST['sub_com'];}

if (isset($sub_com))
{
if (isset($author)) {trim($author);}
else {$author = "";}
if (isset($telefon)) {trim($telefon);}
else {$telefon = "";}
if (isset($time)) {trim($time);}
else {$time = "";}
if (isset($text)) {trim($text);}
else {$text = "";}
if (empty($author) or empty($telefon) or empty($time) or empty($text))
{exit("<center><h2><BR><BR><BR><BR><BR>Заполните все поля!</h2></center>");}

/* Обрабатываем переменные спец. функциями, чтобы предотвратить атаки злоумышленников */
$author = stripslashes($author);
$text = stripslashes($text);
$author = htmlspecialchars($author);
$text = htmlspecialchars($text);
$telefon = stripslashes($telefon);
$time = stripslashes($time);
$telefon = htmlspecialchars($telefon);
$time = htmlspecialchars($time);
/* Отправляем информацию */
$address = "name@profmontaj.ru";
$subject = "Заявка на остекление балкона";
$message = "Имя клиента: - ".$author."\nТелефон клиента: - ".$telefon."\nУдобное время звонка: - ".$time."\nКомментарий: - ".$text;
$subject=convert_cyr_string (stripslashes($subject),w,k);
mail ($address,$subject,$message,"Content-type:text/plain; Charset=windows-1251\r\n");
echo "<html><head>
<meta http-equiv='Refresh' content='1; URL=index.php'>
</head></html>
<center><h2><BR><BR><BR><BR><BR>Ваша заявка была успешно отправлена!</h2></center>";
}
?>
 :::::  Elvis пишет 24.09.2009 @ 19:32 
А если у меня весь сайт в кодировке utf-8 ?
 :::::  александр пишет 06.12.2009 @ 18:19 
Теперь точно название темы в письме будет читабельно!!!

...
/* Отправляем информацию */

$subject = "Заявка";
$header="Content-type: text/html; charset=\"windows-1251\"";
$header.="From: From <from@mail.ru>";
$header.="Subject: ".$subject;
$header.="Content-type: text/html; charset=\"windows-1251\"";
$address = "zakaz@promelnn.ru";
$message = "<body>
<u>Имя:</u><em><b> - ".$author."</b></em><br />
<u>E-mail:</u><em><b> - ".$telefon."</b></em><br />
<u>Удобное время звонка:</u><em><b> - ".$time."</b></em><br />
<u>Сообщение:</u><em><b> - ".$text."</b></em>
</body>";
mail ($address,$subject,$message,$header);
echo "<html>
<head>
<link href='style.css' rel='stylesheet' type='text/css'>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<link href='style.css' rel='stylesheet' type='text/css'>
<meta http-equiv='Refresh' content='3; URL=./'>
</head>
<body>
<center><BR><BR><img src='img/screens.png'><h4>Ваше письмо было успешно отправлено!</h4>
<BR>Через несколько секунд Вы будете автоматически перемещены на главную страницу сайта.</center>
</body>
</html>";
}
?>
 :::::  Игорь пишет 07.04.2011 @ 14:55 
Все отлично работает, спасибо
 :::::  nebo52 пишет 20.09.2011 @ 01:55 
Спасибо, помогло
 :::::  Сергей пишет 23.12.2011 @ 22:30 
Здравствуйте!
Скиньте пожалуйста на E-mail 1sershe1@mail.ru полную форму отправки на почту, что то не клеится у меня. Спасибо!
Имя:
Email:
URL

Введите сумму двух чисел семь и шесть (семь+шесть=?)
Запомнить мою информацию

* Html запрещен* Ваш E-mail опубликован не будет.

Copyright © 2000-2001 WebScript.Ru nas@webscript.ru
Design © 2001 by Parallax Design Studio (aka Spectator.ru)
Все торговые марки и авторские права на эту страницу принадлежат их соответствующим владельцам.
Сгенерировано за: 0.0365920