Приложение Д: php mail, php код, php файлы. Письма с аттачем

Красносельский
Константин
Константинович

Компьютер и программы

Веб-дизайн

Справочники

Документация по CSS1

Настройка файла .htaccess

Коды ошибки http сервера

Подстановочные символы и регулярные выражения

Спецификация файла robots.txt

SSI – Server Side Includes

Таблица кодировки символов кириллицы

Нестандартные символы в HTML

Вторая таблица символов HTML

MIME Types (типы файлов)

 

Советы начинающим

Как в PHP поместить enum в массив

Советы начинающим Веб-дизайнерам: Что, где и зачем.

Правила плохого тона

WEB-уловки

Камень предкновения: верстка таблицами или блоками?

Рекомендации по разработке веб сайта

 

Анализ WEB-конъюнктуры. Создание лучшего сайта и его раскрутка.

Анализ WEB-конъюнктуры

Предисловие

Приручение поисковых машин

Уровень документа - все гениальное просто

Благоустройство нор для поисковых червей или как водить пауков по нашей паутине

Ускорение индексации сайта

Если гора не идет к Магомету

Индекс цитирования

Что это такое и с чем его едят

Приобретение веса в глазах общественности

Послесловие

Последние замечания по интернет-раскрутке

 

Приложения

А: «Рекомендации лучших пауководов»

Краткий комментарий.

Советы специалистов поисковой системы Rambler.

Использование файлов robots.txt.

Часто задаваемые вопросы.

Советы специалистов поисковой системы Aport.

Регистрация сайта в Апорте.

Советы специалистов поисковой системы Yandex.

Добавление страниц

Индексирование

Положение страницы на выдаче

Поиск со своей страницы

Ответы на часто задаваемые вопросы

 

Б: «1000 сверх-сайтов Рунета»

1000 сверх-сайтов Рунета

 

В: «Сто наиболее популярных поисковых слов»

Сто наиболее популярных поисковых слов

 

Г: «Где это сделать?»

Где это сделать?

 

Д: «Практическое руководство!!!»

Краткий комментарий.

Окна, ссылки и меню.

Ссылки и окна. Внешний вид и внутреннее содержание.

Организация ссылок. Всевозможные оглавления.

Если вам не нравятся фреймы, значит, вы не умеете их готовить.

Меню из выпадающих списков (javascript и CSS).

Многоуровневое раскрывающееся меню (javascript и CSS).

Работа с базами данных.

Обработка баз данных браузером посетителя

Обработка баз данных сервером (PHP)

Взаимодействие с посетителем

Отправка писем с веб-страницы.

Формы

Методы форм.

Создание на сайте PHP голосования.

Регистрация и контроль посетителей (PHP).

Интерактивность материала.

Создание гостевой книги на PHP.

Удаление записей из текстовых баз (PHP).

Заргузка файлов на сервер по HTTP-протоколу (PHP).

Разное.

Псевдослучайные элементы (PHP, javascript).

Точное определение имени и версии браузера с помощью JavaScript, SSI или PHP

Клоакинг и технология «Входных дверей».

Отложенное выполнение и выполнение с заданным интервалом (javascript)

Информация о размере, дате, собственные счетчики и протоколы посещений

 

 

 

Консультации

Экспорт и импорт новостей

PHP chmod – права доступа к файлам

WEB 2.0 – миф, или реальность?

Давно забытый AJAX

Способы хранения веб-страниц: документы FrontPage или базы данных

Как заработать на своем сайте?

FTP клиент, как настроить Total Commander

Знак собаки @ и подавление ошибок в PHP

AJAX

AJAX с точностью до наоборот, или как научить AJAX сохранять историю в браузере

 

Мониторинг веб сайтов и анализ поисковых запросов

Документация по Веб-дизайну

Желающим скачать PHP скрипт или JavaScript

 

Литература и поэзия

Гуманитарные науки

Компьютер Программы WEB-дизайн Гуманитарные науки Документация Справочник Статьи Хронология материалов

Компьютер Программы WEB-дизайн Гуманитарные науки Документация Справочник Статьи Обращение к посетителям

Шрифт Font Шрифты Fonts скачать Скачать шрифты

Реферат по психологии религии логике информатике. рефераты контрольные курсовые работы скачать на халаву психология религия информатика халява логика контрольная курсовая работа Скачать рефераты

Сайты достойные внимания: Web-дизайн программирование документация руководство книга для любителей музыки статьи о создании музыки с помощью компьютера обзоры музыкальных программ музыка в mp3 формате Крымский тур-оператор Фонд «Боспор» Боспор Керчь фестиваль Боспорские агоны рекламная фирма кондиционер частный отель «Казантипская хижина» Азовске побережье Керченского полуострова Украина Крым Достойно внимания

Создание web сайта на заказ Создание web сайта на заказ

Создание, разработка web сайта на заказ. WEB-design Создание веб сайтов (цены)

web Сайты, созданные Красносельским К. К. Веб-дизайн разработка сайтов на заказ. WEB-design Веб-сайты, созданные мной (потенциальным заказчикам)

Полезные ссылки Полезные ссылки

Красносельский К. К. Компьютер Windows DOS система реестр BIOS программы Веб-дизайн PHP Perl CSS HTML CGI Java JavaScript музыка поэзия стихи тексты песен Психология философия психоанализ психиатрия логика сознание разум мышление интуиция развитие человек реферат религия информатика Об авторе

Компьютер Программы WEB-дизайн Гуманитарные науки Документация Справочник Статьи Статистика сайта

Показать фреймы

 

Web На сайте

 

 

 

ТаблицейБлоками.

Приложение Д: php mail, php код, php файлы. Письма с аттачем

Последняя модификация: 10.08.2014 г

Страница загружена с адреса: http://webdesign.site3k.ru/conjuncture/append/d/web-mail.html

Моя студия веб-дизайна

Отправка писем с веб-страницы, PHP mail

  1. Отправка писем с веб-страницы с использованием почтового клиента посетителя
  2. Отправка писем с веб-страницы с использованием серверных скриптов

Отправка писем с веб-страницы с использованием почтового клиента посетителя

Наиболее простым способом отправки почты с веб-страницы является включение в страницу ссылки типа:

<a href="mailto:имя@mail.ru">Написать письмо</a>

При нажатии на такую ссылку, автоматически открывается почтовая программа, выбранная посетителем по умолчанию, где он, в привычных для себя условиях может написать и отправить письмо (смотрите документацию по HTML). Но предоставление посетителю возможности написать и отправить письмо ни всегда является именно тем, что требуется. Иногда страница должна сама посылать письма, без участия почтовых клиентов и, даже, без ведома посетителя, например, сообщая разработчику о регистрации нового участника форума. В таких случаях требуется использование серверных почтовых программ и серверных скриптов. Наиболее легкими в настройке являются PHP-скрипты, и приводимые ниже скрипты будут написаны на PHP.

Отправка писем с веб-страницы с использованием серверных скриптов

PHP команда (функция) «mail»

Команда (функция) отправки письма на PHP выглядит так:

mail(куда,тема,текст,заголовок);

Первые три параметра команды (куда, тема, текст) обязательны. Это могут быть нормальные человеческие слова, заключенные в кавычки или заранее определенные PHP-переменные, предваряемые знаком доллара. Если параметр не требуется, вместо него нужно поставить две кавычки. Например:

mail("vasia@mail.ru","Test","");

Если кавычки не поставить, посетитель может получить сообщение об ошибке, а письмо может не уйти (зависит от конфигурации сервера).

Параметр ТЕКСТ определяет содержимое письма. Оно может быть заключено в переменную или быть непосредственно введено в команду. Может состоять из комбинации переменных и текста; комбинация символов \r\n служит для инициализации новой строки в получаемом письме:

mail("vasia@mail.ru","Test","$date\r\nВерсия PHP ". phpversion() . "\r\nЭто мое первое письмо!");

Данная функция отправит на адрес vasia@mail.ru письмо с темой «Test» и текстом, состоящим из трех строк:

Значение PHP-переменной date,
Результатом выполнения команды phpversion(),
Фразы «Это мое первое письмо!»

Для тех, кто не знаком с PHP, поясню: переменные в PHP интерпретируются, если заключены в двойные, НО НЕ В ОДИНАРНЫЕ! кавычки, точка является оператором слияния строк.

 

Необязательный четвертый параметр функции PHP mail содержит заголовок, помещаемый в письме перед текстом. Обычно в нем указывается кодировка письма и обратный адрес. Например:


$to="vasia@mail.ru";
$message="Длинный-предлинный текст письма.";
$header="From: my@mail.ru\nReply-To: my@mail.ru"; 
$header.="\nContent-type: text/plain; charset=\"windows-1251\""; 
mail($to,"Тестовое письмо",$message,$header);

В данном примере тема письма «Тестовое письмо» написано на русском языке, в результате чего некоторые почтовые клиенты могут отобразить тему некорректно. Эта проблема решается путем кодирования темы:

$subject="=?windows-1251?B?". base64_encode("Тема письма"). "?=";

или написания темы письма латиницей.

(косая черта перед кавычками в "\nContent-type: text/plain; charset=\"windows-1251\"" позволяет игнорировать кавычки и вставить их в текст письма, как они есть, не пытаясь интерпретировать как конец параметра. Последняя кавычка не предотвращается косой, так как это действительно конец).

Вызов PHP-кода с WEB-страницы

Существует несколько способов заставить работать PHP-скрипт:

 

1) Дать странице расширение PHP, например, my-mail.php.

 

2) Включить вызов PHP-скрипта в гиперссылку html-файла, например:

<A HREF="my-mail.php">отправить письмо</a>

или установить PHP-страницу адресатом для формы (форму можно поместить в сам PHP-файл тогда имя скрипта можно заменить командой <?=$_SERVER["SCRIPT_NAME"]?> интерпретация которой и даст имя текущего PHP-файла):


<FORM name="frm" ACTION="<?=$_SERVER["SCRIPT_NAME"]?>"> 
<P>Введите E-mail адрес, на который Вы хотите получить письмо:
<P><INPUT TYPE=text SIZE=30 name="to">
<dt><INPUT TYPE=RESET VALUE="Очистить"> <INPUT TYPE=SUBMIT name="doSend" VALUE="Отправить"> 
</FORM>

(не многим отличается от вызова почтового клиента посетителя).

 

3) Включить PHP-скрипт в HTML-страницу с помощью SSI:

<!--#include virtual="/mail.php?agent=$HTTP_USER_AGENT&date=$DATE_GMT" -->

(смотрите  документацию по SSI-директивам). Последний вариант вызывает скрипт без участия посетителя и, в качестве параметров, после вопросительного знака может передать несколько пар переменная=значение, разделенных коммерческим и «&».

Проверка успешности отправки письма

Для проверки успешности отправки письма достаточно задать команду его отправки условием оператора IF:


if(mail($to,$subject,$file,$header))
{
    /*  Письмо отправлено */
} else {
    /*  Произошла ошибка */
}

(текст между /* и */ является комментарием и не обрабатывается интерпретатором PHP).

Проверка заполнения полей формы

Для проверки, заполнены ли необходимые поля формы, в тег формы достаточно поставить Ява-скрипт, вызываемый по событию onsubmit (нажатие кнопки «послать») и отменяющий отправку, в случае некорректности данных. Например:

<FORM name="frm" onsubmit="if(document.frm.to.value=='') {alert('Укажите свой E-Mail!'); return false;}" ACTION="my-mail.php">

Использование параметров вызова PHP-кода

Переменные, заданные в форме или переданные в качестве SSI-директивы include (include virtual), могут непосредственно использоваться в PHP-скрипте. Достаточно поставить перед ними знак доллара. Например:


<FORM name="frm" ACTION="<?=$_SERVER["SCRIPT_NAME"]?>"> 
<P>Введите E-mail адрес, на который Вы хотите получить письмо:
<P><INPUT TYPE=text SIZE=30 name="to">
<dt><INPUT TYPE=RESET VALUE="Очистить"> <INPUT TYPE=SUBMIT name="doSend" VALUE="Отправить"> 
</FORM>
 
<?
if(@$doSend) /* Проверить нажатие кнопки, иначе письмо будет уходить и при обновлении страницы  (знак @ позволяет отключить сообщение об ошибке, если переменная doSend еще не определена) */
{
$header="From: my@mail.ru\nReply-To: my@mail.ru"; 
$header.="\nContent-type: text/plain; charset=\"windows-1251\""; 

mail($to,"Тест","",$header);
} 
?>

Символы <? и ?> означают начало и конец PHP-скрипта.

Использование текста, хранящегося в отдельном файле

Иногда может потребоваться рассылать посетителям некий готовый текст (например, инструкции), или отсылать себе серверные протоколы. Для этого необходимо создать текст сообщения из имеющегося файла, для чего открыть его и считать в тело письма:



$file=fopen("имя_файла","r");
$text=fread($file, filesize("имя_файла")); /* переменная text будет содержать текст из желаемого файла */
fclose($file);

mail($to,"Эксперимент по отправке письмом текста из файла с помощью PHP",$text,$header);

В результате, к получателю придет обычное текстовое сообщение (без каких-либо прикрепленных файлов), содержащее все, что содержалось в указанном файле. При необходимости, к тексту файла можно добавить другие строки, например:

mail($to,"Другой эксперимент по отправке письма PHP mail","$date\r\n$text",$header);

Если файл с текстом, включаемым в письмо, содержит HTML-форматирование, письмо будет выглядеть как исходный HTML-код. Для того чтобы адресату было доставлено нормальное HTML-письмо, требуется иной подход.

Отправка простых HTML-писем с использованием PHP mail

Создание HTML-писем является проблемой, решение которой неизвестно новичкам. На самом деле все очень просто: достаточно в заголовке указать Content-type=text/html, а само письмо записать в html-виде. Например:


$header="From: my@mail.ru\nReply-To: my@mail.ru"; 
$header.="\nContent-type: text/html; charset=\"windows-1251\""; 
$text="<HTML>\r\n";
$text.="<HEAD>\r\n";
$text.="<META http-equiv=Content-Type content='text/html; charset=windows-1251'>\r\n";
$text.="</HEAD>\r\n";
$text.="<BODY>\r\n";
$text.="<h1>Письмо в HTML-формате</h1>\r\n";
$text.="<p>Это обычный абзац (в отличие от предыдущего заголовка 1-го уровня).\r\n";
$text.="</BODY>\r\n";
$text.="</HTML>";

mail($to,"Тест",$text,$header);

В данный HTML-текст нельзя включать рисунки и другие объекты, так как они не будут отправлены вместе с письмом, если их не приаттачить (присоединить к письму).

Отправка письма с аттачем (вложением) с использованием PHP mail

Для PHP-кода не имеет значения сколько файлов нужно приаттачить. Разница лиш в том, сколько раз требуется повторить код обработки. Поэтому сразу рассмотрим вариант с неопределенным количеством вложений. Данный код можно сохранить в отдельном файле и вызывать из различных форм. В этом случае, его первую строку следует удалить, а переменную $filestring задавать в качестве параметра, передаваемого из формы. Например так:


<FORM name="frm" ACTION="<?=$_SERVER["SCRIPT_NAME"]?>"> 
<P>Введите E-mail адрес, на который Вы хотите получить письмо:
<P><INPUT TYPE=text SIZE=30 name="to">
<INPUT TYPE=hidden name=filestring VALUE="файл1,файл2,файл3,и т. д.">
<INPUT TYPE=SUBMIT name="doSend" VALUE="Отправить"> 
</FORM>

Сам скрипт, создающий письмо с аттачем, выглядит так (предпологается что переменная filestring должна определятся в самом скрипте, а не передаваться извне):


$filestring="файл1,файл2,файл3,и т. д."; /* поместить в строку перечень присоединяемых файлов */
$filearr=split(",", $filestring); /* разбить перечень файлов на элементы массива, ориентируясь по запятой */
$boundary="------"; /* задать разделитель файлов */
$header="From: my@mail.ru\nReply-To: my@mail.ru\n"; 
$header.="Content-Type: multipart/mixed; boundary=\"$boundary\""; 
$body=""; /* объявить глобальную переменную body */

function attach($name) { /* функция обработает каждый файл */
  GLOBAL $boundary,$body; /* определить что, эти переменные берутся из глобальных (ранее определенных), а не создаются локально (фишка PHP) */
  $file=fopen($name,"r"); /* открыть файл */
  $text=fread($file, filesize($name)); /* считать весь в переменную */
  fclose($file); /* закрыть */
  $body.="--$boundary\n"; /* добавление двух дефисов ОБЯЗАТЕЛЬНО! */
  $body.="Content-Type: application/octet-stream; name==?windows-1251?B?". base64_encode($name). "?=\n"; 
  $body.="Content-Transfer-Encoding: base64\n";
  $body.="Content-Disposition: attachment; filename==?windows-1251?B?". base64_encode($name). "?=\n\n"; 
  $body.=chunk_split(base64_encode($text))."\n"; /* закодировать полученное из файла и добавить в тело письма */
}

for ($i=0; $i < sizeof($filearr); $i++) /* для переменной i, равной нолю, каждый раз увеличивая на единицу, пока ее значение не сравняется с числом элементов массива */
{
  attach($filearr[$i]); /* для каждого элемента массива (каждого файла) вызвать функцию обработки */
}

$body.="--".$boundary ."--\n"; /* добавление двух дефисов ДО и ПОСЛЕ для закрывающего разделителя ОБЯЗАТЕЛЬНО! */

mail("vasia@mail.ru","test",$body,$header);

Правда, HTML-письмо все равно не отобразит рисунки. Для отображения рисунков внутри HTML-письма, требуется

  1. Вместо
    $body.="Content-Disposition: attachment; filename==?windows-1251?B?". base64_encode($name). "?=\n\n"; 
    

    Указать

    $body.="Content-ID: <Уникальный идентификатор>";
    
  2. Этот же идентификотор следует указать в качестве имени рисунка с обязательными параметрами 3D"cid:
    <img src=3D"cid:Этот же идентификатор>"
    

В результате, функция должна запускаться со вторым парамертом, указывающим, требуется ли Content-Disposition для данного файла или Content-ID и, в зависимости от значения этого параметра, включать в $body либо одну, либо другую, строку...

Но и это не все! Если к письму аттачатся файлы, его текст нельзя просто поместить под заголовком. Текст письма тоже должен идти, как аттач! Только с другим типом и кодировкой:


$body.="Content-type: text/html; charset=\"windows-1251\"\n"; 
$body.="Content-Transfer-Encoding: quoted-printable\n";

или


$body.="Content-type: text/plain; charset=\"windows-1251\"\n"; 
$body.="Content-Transfer-Encoding: 8bit\n";

если это не HTML, а TXT-письмо.

 

Комментарии к странице (всего 17)

 

 

 

Отправка писем с веб страницы функция PHP mail бесплатный скрипт JavaScript Script PHP скрипт бесплатные скрипты отправка почты php mail web e mail


На главную страницу сайта Отправка писем с веб страницы функция PHP mail бесплатный скрипт JavaScript Script PHP скрипт бесплатные скрипты отправка почты php mail web e mail