вы можете воспользоваться нашим примером, в котором реализована отправка писем с использованием smtp-сервера, для которого требуется авторизация. Поэтому не забудьте добавить в скрипт соответствующие реквизиты доступа
Как отправить письмо через PHP, используя формы, и как при этом устранить возникающие проблемы с кодировкой? Рассмотрим на простом примере, как отправить вопрос через формы на сайте.
У нас будет 3 поля для ввода:
Ваше имя:
* E-mail:
* Вопрос:
Причем "Ваше имя" не является обязательным параметром.
Для простоты и удобства разместим форму и код прогараммы в одном файле. Важно указать кодировку страницы (windows-1251), чтобы далее не возникало проблем с перекодированием из win в koi (ниже)
Итак, приступим. Начало документа стандартное:
Код:
Далее идет 2 логические части:
1 - вывод формы
2 - обработка формы и отправка письма
Вначале идет вывод формы.
Для удобства в начале определяем e-mail через переменную $mailto, на который будет отсылаться письмо из формы.
Далее мы определяем, была ли нажата кнопка "отправить".
В конце формы имеется кнопка "отправить", она имеет аттрибуты name="ok" и value="отправить". После нажатия на нее переменная $ok будет иметь значение "отправить". Если кнопка не нажата, то переменная не определена.
Таким образом, выражение if (empty($ok)) означает буквально "если кнопка отправить не была нажата". Функция empty() возвращает true, если переменная не определена, содержит 0 или пустоту.
Код:
Далее идет вывод формы, если выполнено предыдущее условие if (empty($ok)).
Переменная $PHP_SELF означает, что обработку формы производит текущий файл, т.е. тот же, на кот. расположена форма.
Код:
В противном случае, т.е. если была нажата кнопка, идет обработка формы и отправка письма
Код:
Далее идет проверка на корректность заполнения поля "E-mail". Любители ругулярных выражений эту проверку поймут. Для остальных немного поясню:
Подразумевается, что e-mail должен быть такого вида:
слово@слово.слово
При этом слово может состоять из всех букв латинского алфавита и цифр и точка может быть не одна. (например слово@слово.слово.слово)
[a-z,0-9] - означает "любая буква латинского алфавита или цифра"
+ - означает, что [a-z,0-9] может встречаться 1 или более раз.
Если введен неправильный e-mail, то в переменную $error записывается ругательное сообщение.
Код:
Если поле "Вопрос" не заполнили, то к переменно $error добавляем еше одно ругательство:
Код:
Если переменная $error не пустая, то мы ее выводим на экран и немедленно прекращаем дальнейшую обработку с помощью exit
Код:
Ну а если таки $error осталась пустой и exit не сработал, то можно приступать к отправке письма, т.е. главной цели всего этого мероприятия...
Сформируем тему и тело сообщения:
А теперь самое главное, чтоб потом можно было прочитать письмо "по-русски" :) Функция convert_cyr_string перекодирует строку из win в koi (w-win, k-koi) Это необходимо, т.к. все почтовые клиенты по дефалту принимают письма в koi. А у нас вверху страницы стоит charset=windows-1251, поэтому функция грамотно переводит из win в koi Затем с помощью функции mail отправляется письмо на $mailto, указанный в начале файла.
Код:
Ну и самое приятное... Если письмо успешно отправлено, то выводим благодарственную надпись и предлагаем вернуться..
Код:
Стандартный конец..
Код:
P.S. Как наверно понял читатель, нужно выделить и скопировать все зеленые блоки в один файл по порядку и запустить его на сервере
Весь код является полностью проверенным и рабочим.
Для отправки электронного письма, без использования почтового клиента, мы будем использовать компонент TNSMTP, который находится на вкладке FastNet.
Компонент TNSMTP позволяет отправлять электронную почту через почтовый сервер или выполнять другие команды, описанные в стандарте RFC 821. Данный компонент работает по протоколу SMTP (Simple Mail Transfer Protocol). По стандарту RFC 821 протокол SMTP использует порт 25. При подключении к почтовому серверу необходимо знать учетную запись (login) своего почтового ящика. Чаще всего, имя пользователя - это начальная часть вашего почтового адреса – до символа «@». Так же для подключения к SMTP серверу необходимо знать его адрес. Адрес своего почтового сервера указывается при создании на нем почтового ящика. Стоит заметить, что адрес почтового ящика и адрес сервера – это совершенно разные вещи.
Создадим небольшой пример. Добавим на форму стандартную кнопку и компонент TNSMTP.
Собственно, Вы можете и не добавлять на форму данный компонент, а просто прописать его в строках Uses. Такой вариант очень полезен, если Вы пишете программу в «консольном» режиме.
Код:
Но этого мы делать не будем. В обработчик кнопки поместим код расположенный ниже.
Код:
Для корректной работы компонента необходимо заполнить свойства Host и Port. Для того чтобы подключиться к серверу, необходимо вызывать метод Connect, а для отключения - Disconnect. Главное свойство компонента TNSMTP - PostMessage. Это свойство содержит в себе информацию об отправляемом письме: ToAddress (адрес получателя), FromAddress (адрес отправителя), Body (текст письма), Subject (тема письма) и FromName (имя отправителя). После отправки письма необходимо отключиться от сервера, используя метод Disconnect.
Данная публикация предназначена для тех кто делает первые шаги в PHP-программировании.
В статье приводятся примеры часто используемых методов работы с текстом.
После каждого примера идет краткое описание используемых функций.
Данная публикация предназначена для тех кто делает первые шаги в PHP-программировании. В статье приводятся примеры часто используемых методов работы с текстом. После каждого примера идет краткое описание используемых функций, описания взяты из официального руководства PHP. Примеры будут пополнятся по мере поступления вопросов от читателей.
Урок №1
Заменяем {text}, например на слово "студёную", строгий регистр, т.е. заменится только {text}, но не {TexT}:
str_replace (search, replace, subject)
Эта функция возвращает строку или массив со всеми вхождениями search в subject, заменёнными данным значением replace.
Урок №2
Заменяем "летнюю", например на слово "зимнюю", нестрогий регистр, т.е. заменится "летнюю", "ЛЕТНЮЮ", "Летнюю", "леТНюю" и т.д.
preg_replace (pattern, replacement, subject)
Эта функция выполняет поиск и замену регулярного выражения.
Ищет в subject совпадения с pattern и замещает их replacement, где pattern - это регулярное выражение, с которыми мы познакомся позже.
Урок №3
Считываем первые 5 символов из текста:
substr (string, start [, length])
Substr возвращает часть строки string, специфицированную параметрами start и length.
Если start положительный, возвращаемая строка начинается со start'овой позиции в string, отсчитываемой от нуля. Например, в строке 'abcdef' символ в позиции 0 это 'a', символ в позиции 2 это 'c', и так далее.
Урок №4
Считываем последние 5 символов из текста:
Урок №5
Удаляем первые 5 символов из текста:
Урок №6
Удаляем последние 5 символов из текста:
Урок №7
Считываем символы с 3-го по 7-ой:
Урок №8
Заменяем все буквы в тексте на маленькие:
strtolower (string)
Возвращает string со всеми алфавитными символами, конвертированными в нижний регистр.
Урок №9
Заменяем все буквы в тексте на большие:
string strtoupper (string)
Возвращает string со вмеси алфавитными символами, конвертированными в верхний регистр.
Урок №10
Меняем все буквы в тексте на маленькие и делаем самую первую букву заглавной:
ucfirst (string)
Возвращает строку с первым символом в верхнем регистре, если это алфавитный символ.
Урок №11
Замена нескольких пробелов на один:
Урок №12
Удаление лишних пробелов по левому и правому краю текста:
trim (string)
Эта функция возвращает строку с вырезанными в начале и конце строки string пробелами.
Урок №13
Удаление лишних пробелов по левому краю текста:
ltrim (string)
Эта функция возвращает строку с вырезанными пробелами в начале string.
Урок №14
Удаление лишних пробелов по правому краю текста:
rtrim (string)
Эта функция возвращает строку с вырезанными пробелами в конце string.
Урок №15
Удаление всех тэгов:
strip_tags (str [, allowable_tags])
Эта функция пытается вернуть строку str с вырезанными тэгами HTML и PHP. Выдаёт ошибку с предупреждением в случае наличия неполных или ложных тэгов.
Вы можете использовать необязательный второй параметр для специфицирования тэгов, которые не должны вырезаться.
Урок №16
Удаление всех тэгов, кроме <b> и <i>:
Урок №17
Проверяем, есть ли в тексте слово "разогнём", нестрогий регистр, т.е. ищется и "РаЗогНЁМ", и "РАЗОГНЁМ" и "разогнём" и т.д.:
preg_match (pattern, subject)
Ищет в subject совпадения с регулярным выражением, заданным в pattern.
Урок №18
Проверяем, есть ли в тексте слово "надо", строгий регистр, т.е. ищется только слово "надо":
strstr (haystack, needle)
Возвращает часть строки haystack от первого вхождения needle до конца haystack.
Если needle не найден, возвращает FALSE (ложь).
Урок №19
Считываем первые 6 слов из текста:
explode (separator, string)
Возвращает массив строк, каждая из которых является подстрокой строки string и сформирована путём разделения строки по границам образованными сепаратором строки separator.
Операция .= добавляет к строковой переменной новые символы.
Урок №20
Конвертируем текст с кодировком windows-1251 в кодировку koi8-r:
convert_cyr_string (str, from, to)
Эта функция возвращает данную строку, конвертированную из одного набора символов кириллицы в другой.
Аргументы from и to это односимвольные аргументы, представляющие исходный и целевой наборы кириллицы. Поддерживаются типы:
k - koi8-r
w - windows-1251
i - iso8859-5
a - x-cp866
d - x-cp866
m - x-mac-cyrillic
Урок №21
Используем в качестве разделителя "||" (две вертикальных черты):
Урок №22
Заменяем <b> на <b> и </b> на </b>:
htmlspecialchars (string string)
Некоторые символы имеют в HTML специальное значение и должны быть представлены мнемониками HTML для сохранения своего значения.
Эта функция возвращает строку с выполненной конвертацией.
Используется для того, чтобы всякие нехорошие человеки не написали в вашей гостевой (например) нежелательных тегов, испортив тем самым её внешний вид.
Хотя эти и не единственное где можно применить данную функцию, мы поговорим об этом при случае 1
& (амперсанд) становится &
" (двойная кавычка) становится "
' (одинарная кавычка) становится '
< (меньше) становится <
> (больше) становится >
В этой статье я приведу пример того, как из PHP скрипта отправляется электронная почта с помощью функции mail().
Простейший пример отправки выглядит так :
Как мы видим, всё достаточно просто.
Первый параметер функции - электронный адрес получателя.
Второй параметер - заголовок (Subject) письма.
Третий параметер - тескст сообщения.
Также можно использовать необязательный четвёртый параметер - хедеры (headers) письма. Этот параметер используется для форматирования сообщения. Т.е. для установки кодировки, формата, указания отправителя и так далее.
Вот ещё один пример с использованием четвёртого параметра:
Письма также можно отправлять и в HTML виде. Тогда вместо
пишем
Ну вот, в принципе, и всё.
Заголовок, естественно, можно расширять, но я описал только самые используемые его части.
Поисковые серверы, в последнее время, при регистрации Вашего сервера, сайта или страницы, используют информацию, хранящуюся в специальных тэгах META, которые помещаются в секцию HEAD. Большинство начинающих вебмастеров и веб-дизайнеров не придают особого внимания этим тэгам, и зря. Сайт, который не посещается, подобен макулатуре, безжалостно выбрасываемой в мусорную корзину. Увеличивайте посещаемость, пользуйтесь подручными средствами!
Во-первых, стоит вкратце остановиться на самих тэгах и их значении с точки зрения видимости и легкой "находимости" вашего сайта.
META HTTP-EQUIV="Expires" CONTENT="Mon, 20 Sep 1999 00:00:01 GMT"
Используется для того, чтобы в нужное время браузер при просмотре документа брал не версию, хранящуюся в кэше, а свежую версию прямо с Вашего сайта.
META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Windows-1251"
Используется для того, чтобы браузер мог правильно отобразить содержимое страницы и для определения поисковой машиной языка, на котором написана страница (наилучший пример - AltaVista)
META HTTP-EQUIV="Refresh" CONTENT="x; URL=http://foo.bar/blatz.html"
Используется для того, чтобы в случае смены адреса страницы браузер пользователя автоматически переключался на новый адрес.
META name="author" content="codeguru"
Используется для указания имени автора. В большинстве случаев, поисковые системы позволяют найти нужный сайт и по имени автора (или найти самого автора :-).
Полезно также указать и авторские права название фирмы почти наверняка будет проиндексировано поисковой машиной.
META http-equiv="PICS-Label" content=' (PICS-1.1 "http://www.gcf.org/v2.5" labels on "1994.11.05T08:15-0500" until "1995.12.31T23:59-0000" for "http://w3.org/PICS/Overview.html" ratings (suds 0.5 density 0 color/hue 1)) '
Еще одна интересная штучка отсечение нежелательных пользователей от указанной страницы (например, детей от секс-серверов), при помощи введения рейтинга - т.н. "красной лампочки". Некоторые браузеры позволяют "повесить замок" на содержимое определенных сайтов, запрещая их просмотр. Имеется несколько признанных рейтинговых систем, распознаваемых браузерами. Сам браузер, естественно, можно подстроить под использование рейтинга, а профиль пользователя браузера защитить паролем. Как правило, текст в этот тэг вставляется в строгом соответствии с текстом, имеющемся на рейтинговом сервере.
META name="keywords" content="corporate,guidelines,cataloging"
Список терминов и ключевых слов это именно то, что является самым главным при индексировании Вашего сайта поисковой машиной!
META name="description" content="Corporate Web Page"
Краткое описание Вашего сайта, используемое поисковым сервером для индексирования, и, как правило, вставляемое в текст страницы найденных совпадений в качестве описания Вашего сайта.
Все тэги META не видны при просмотре документа, и заметно увеличивают его размер, но, с другой стороны, без них не обойтись. (Представьте себе такую интересную задачу составить каталог книг в библиотеке, при условии того, что во всех книгах отсутствуют страницы с содержанием и аннотацией. Представляете? Так вот, тэги META и есть те самые страницы, на которых напечатано содержание).
Поэтому плавно перейдем ко второму (основному) разделу, а как же правильно записать эти тэги, чтобы Ваш сайт было легко отыскать при помощи поисковых систем. Надеюсь, что к этому времени Вы уже освоите синтаксис этих тэгов :-).
Длина содержимого тэгов META "desctiptions", не должна превышать 200 символов, а "keywords" 1000 символов. Это связано с тем, что поисковые серверы, как правило, используют именно такие величины при индексировании информации о Вашем сайте. Ограничения на длину этих тэгов нет. Однако, раздувать их до бесконечности смысла не имеет - все равно поисковые машины не воспримут всей информации! Можно получить и отрицательный результат некоторые поисковые машины отбросят часть описания, превышающего установленные нормы, в результате чего в каталог попадет не вся желаемая информация, или сервер просто отвергнет регистрацию Вашего сайта, или будет проиндексировано только название.
Нужно включить все наиболее часто используемые термины в описание (description) для увеличения посещаемости сайта
Вы, конечно же, можете включить в описание и термины, не имеющие отношения к Вашему сайту, однако в Сети такое поведение считается некорректным (появился даже термин спэмдексинг!). В список ключевых слов можно вставлять и фразы. В этом случае у Вашего сайта появляется шанс попасть в самое начало списка, выданного поисковым сервером, в случае совпадения фразы с той, что вводит пользователь. Задумайтесь над фразой - может быть, она прибавит посещений Вашему сайту!
Для увеличения рейтинга сайта и попадания его в верхнюю часть списка необходимо повторять от 3 до 7 раз (!) каждый термин, включаемый в описание.
Однако же, перебарщивать не стоит некоторые поисковые машины могут просто не проиндексировать Ваш сайт или отбросить при индексировании слишком часто повторяющийся термин (хрен редьки не слаще!) Повторение ключевых слов в фразах (попытка обмана поисковой машины :-), вероятнее всего приведет к отрицательному результату, описанному выше. Частота появления терминов в списке META никоим образом не согласуется с появлением терминов в тексте страницы. Поисковые машины работают, как правило, с тэгами META, а в случае их отсутствия уже с содержимым страницы.
Используйте синонимы - как можно большее их количество в описаниях и списке терминов.
Это не спэмдексинг, а трезвое осознание правильности выбранного пути :-).
Не используйте в описаниях и в списке терминов отвлеченные понятия и слова, не относящиеся к содержимому сайта, или слабо связанные друг с другом.
Поисковые машины пишут умники, хорошо разбирающиеся в искусственном интеллекте, и, скорее всего, Ваш сайт, украшенный гирляндой взаимонезависимых слов, будет успешно вычеркнут из индексного списка поискового сервера, причем, возможно, даже без участия его владельца.
Итак вперед, за орденами! Увеличивайте количество посещений сайта при помощи грамотно составленных тэгов META.