|| разделы:: | |
|| поиск по сайту:: | |
|| реклама:: | |
|| новости почтой:: | |
Популярные статьи |
|
Hot 5 Stories |
|
|| рекомендуем:: |
Советую здесь у профессионалов заменить камеру iPhone 5.
|
| |
Отправка писем через 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 | |
::::: 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>
в чем же тут конкретно ошибка?
|
Ну нифига сколько тут девушек появилось ;)
|
::::: 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 | |
помогите!!!
не работает почему-то?????
выдает отправка письма!!!!
и все !!! ни фига ен отправляет????!!!
|
это всё из-за
"From: $email
X-Mailer: PHP/" . phpversion());
у меня тоже на этой фигне ошибку показывает :(
|
::::: helen пишет 16.02.2003 @ 17:53 | |
как сделать, чтобы после отправки письма на странице появлялось не "назад", а та же форма, которую заполняли, и еще, может вы напишите как сделат, чтобы это было как подписка на рассылку, т.е. просто поле E-mail и кнопка "Подписаться".
Буду признательна)
|
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" однозначно рулит
|
Вопрос, всё же, остаётся актуальным, знает кто-нибудь или нет?
Как прикрепить файл (например фото) или 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 | |
Всем привет!
Я не программер на ПХП, более на иных системных ленгвичах.
Что удивляет, это то девушки атакуют все больше :)
Уже и на пхп мастарами заделались!
Ну удачи в деле.
П.С. Хотя на кой вам это?
:)
|
Девушки и юноши.... здравствуйте!
Я не новичок, но и не спец, по этому ничего не могу понять!
1) Ваш скртпт правильный!
2) Мной чуть правленный...
3) Письмо НЕ ПРИШЛО!!!
4) Никаких ошибок не пишет, но и "назад" не выводит!
Просто, страница перегружается после "Отправить" и все! НИЧЕГО!!!
|
::::: 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 соединение с IRC серверами
то предлагаем вам Совершенно Новый IRC сервер -(Новосибирский)
irc.novosib.net.ru порт 6667 Официальный канал сервера #novosib
Также этот сервер доступен совершенно для всех! Желаем удачи и успехов!
|
::::: baycity пишет 25.06.2004 @ 11:46 | |
Вопрос от младенца.
Если я правильно понимаю, то $PHP_SELF не даст нужного результата, если скрипт расположен в .tpl-файле?
Если я неправ, прошу поправить.
А если прав, прошу подсказать начинающему, можно ли реализовать такое действие в этом случае и как.
Заранее спасибо.
|
::::: 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 | |
Ищу в сети скрипт. Постоянно натыкаюсь на эту статью. Скрипт то битый, не рабтает.
|
Скрипту нужна минимильная обработка, читайте комменты и будем вам:)
|
Хотя хз рабочий он или нет - я вот письмо уже два дня жду.
|
В скрипте несколько промахов:
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.. ЗАРАНЕЕ ОГРОМНЕЙШЕЕ СПАСИБО!!!
|
|
С моего сайта. Всё работает.
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 ?
|
|
Теперь точно название темы в письме будет читабельно!!!
...
/* Отправляем информацию */
$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 полную форму отправки на почту, что то не клеится у меня. Спасибо!
|
| |