Задача
Интернет магазин. покупатель выбирает товар, выбирает способ доставки и оплаты.
Если способ доставки выбран "Почтой России" - отправлять менеджерам сайта сообщение с заполненным почтовым бланком ф.116.
Если выбран способ оплаты "Наложенный платеж" - отправлять заполненный почтовый бланк ф.112.
Решение
Для начала нужно создать эти бланки. Код бланков описывать не буду. (скачать их можно тут html файлы, в формате php для принятия post'данных).
112.php и 116.php - каждый бланк будет принимает GET данные.
Обращаться к ним следующим образом:
Переходим к функции отправки почты.
Создаем файл mail.php в который передаются данные формы. (В форме пользователь заполняет свои данные, ФИО, почтовый адрес, телефон.. описывать форму не буду.)
Для начала нужно сформировать запрос обращения к бланкам:
Непосредственно сама функция отправки
Вызов функции и передача параметров
Интернет магазин. покупатель выбирает товар, выбирает способ доставки и оплаты.
Если способ доставки выбран "Почтой России" - отправлять менеджерам сайта сообщение с заполненным почтовым бланком ф.116.
Если выбран способ оплаты "Наложенный платеж" - отправлять заполненный почтовый бланк ф.112.
Решение
Для начала нужно создать эти бланки. Код бланков описывать не буду. (скачать их можно тут html файлы, в формате php для принятия post'данных).
112.php и 116.php - каждый бланк будет принимает GET данные.
Обращаться к ним следующим образом:
http://****/112.php?fio1=".$_POST['firstname']."&fio2=".$_POST['lastname']."&fio3=".$_POST['thirdname']."&adr1=".$_POST['area'].",".$_POST['city']."&adr2=".$_POST['address'].",&pst=".$_POST['postindex'])Бланки готовы, и ждут обращения с GET 'данными.
Переходим к функции отправки почты.
Создаем файл mail.php в который передаются данные формы. (В форме пользователь заполняет свои данные, ФИО, почтовый адрес, телефон.. описывать форму не буду.)
Для начала нужно сформировать запрос обращения к бланкам:
$file = str_replace(" ", "%20", "http://****/112.php?fio1=".$_POST['firstname']."&fio2=".$_POST['lastname']."&fio3=".$_POST['thirdname']."&adr1=".$_POST['area'].",".$_POST['city']."&adr2=".$_POST['address'].",&pst=".$_POST['postindex']);
$file2 =str_replace(" ", "%20", "http://****/116.php?fio1=".$_POST['firstname']."&fio2=".$_POST['lastname']."&fio3=".$_POST['thirdname']."&adr1=".$_POST['area'].",".$_POST['city']."&adr2=".$_POST['address'].",&pst=".$_POST['postindex']);
Пробелы обязательно заменить на %20
Далее проверим, выбрана ли доставка почтой, и выбран ли способ оплаты - наложенным платежом. и создаем массив файлов $files.
if($_POST['pays'] == 3)112.html и 116.html - это имена создаваемых файлов, для последующего вложения к письму.
{ $files = array('112.html' => file_get_contents($file), '116.html' => file_get_contents($file2));}
elseif($_POST['pays'] == 2)
{ $files = array('116.html' => file_get_contents($file2));}
else $files = "";
Непосредственно сама функция отправки
function mail_to($to, $from, $subj, $text, $files=null){Подготовка заголовков сообщения
$boundary = md5(uniqid(time()));Подготовка заголовков вложения
$headers[] ="MIME-Version: 1.0";
$headers[] ="Content-Type: multipart/mixed;boundary=\"$boundary\"; type=\"text/html;\"";
$headers[] ="From: ".$from;
$headers[] ="Reply-To: ".$from;
$headers[] ="Return-Path: ".$from;
$headers[] ="X-Mailer: PHP/" . phpversion();
$multipart[]= "--".$boundary;Читаем созданные массив файлов и вкладываем их в письмо
$multipart[]= "Content-Type: text/html; charset=cp1251";
$multipart[]= "Content-Transfer-Encoding: Quot-Printed";
$multipart[]= ""; // раздел между заголовками и телом html-части
$multipart[]= $text;
$multipart[]= "";
if ((is_array($files))&&(!empty($files)))Отправляем почту
{
foreach($files as $filename => $filecontent)
{
$multipart[]="--".$boundary;
$multipart[]= "Content-Type: application/octet-stream; name=\"".$filename."\"";
$multipart[]= "Content-Transfer-Encoding: base64";
$multipart[]= "Content-Disposition: attachment; filename=\"".$filename."\"";
$multipart[]= "";
$multipart[]= chunk_split(base64_encode($filecontent));
}
}
$multipart[]= "--$boundary--";
$multipart[]= "";
$headers=implode("\r\n", $headers);
$multipart=implode("\r\n", $multipart);
return mail($to, $subj, $multipart, $headers);
}
Вызов функции и передача параметров
$to="<email@email>
$from="email@from";
$subj="Тема сообщения - Почтовые бланки";
$text="Текст сообщения - ";
mail_to($to, $from, $subj, $text, $files);
4 комментария:
Огромное спасибо!
Заработал только этот скрипт!
Перегуглил все что можно... но заработад только он....
Еще раз спасибо.
Алексей, не могли бы вы перезалить архив с бланками?
Перезалил
Благодарю. Полезная статья.
Отправить комментарий