Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Сборник статей
 
 

Отправка письма с вложением

Автор: IT-студия SoftTime (softtime.ru)

Функция предназначена для отправки письма с сайта с вложенным файлом. Создадим HTML-форму, предназначенную для заполнения пользователем

HTML-форма index.php


<HTML> 

<HEAD>
<TITLE>Отправка сообщения с вложением</TITLE>
</HEAD>
<BODY>
<H3> <center><font color=#1E90FF>Отправка сообщения с вложением</font></H3>
<center>
<table width=1 border=0>
<form action=simple_mail.php enctype='multipart/form-data' method=post>

<tr><td width=50%>To:</td><td align=right><input type=text name=mail_to maxlength=32></td></tr>
<tr><td width=50%>Subject:</td><td align=right><input type=text name=mail_subject maxlength=64></td></tr>
<tr><td colspan=2>Сообщение:<br><textarea cols=50 rows=8 name=mail_msg></textarea></td>
<tr><td width=50%>Photo:</td><td align=right><input type=file name=mail_file maxlength=64></td></tr>
</tr><tr><td colspan=2><input type=submit value='Отправить'></td></tr>
</form>
</table>
</center>
</BODY>
</HTML>

Обработчик simple_mail.php HTML-формы index.php может выглядеть следующим образом

Обработчик simple_mail.php


<?php 

  
if(empty($_POST['mail_to'])) exit("Введите адрес получателя");
  
// проверяем правильности заполнения с помощью регулярного выражения
  
if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i", $_POST['mail_to'])) exit("Введите адрес в виде somebody@server.com");
  
$_POST['mail_to'] = htmlspecialchars(stripslashes($_POST['mail_to']));
  
$_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject']));
  
$_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg']));
  
$picture = "";
  
// Если поле выбора вложения не пустое - закачиваем его на сервер
  
if (!empty($_FILES['mail_file']['tmp_name']))
  {
    
// Закачиваем файл
    
$path = $_FILES['mail_file']['name'];
    if (
copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;
  }
  
$thm = $_POST['mail_subject'];
  
$msg = $_POST['mail_msg'];
  
$mail_to = $_POST['mail_to'];
  
// Отправляем почтовое сообщение
  
if(empty($picture)) mail($mail_to, $thm, $msg);
  else
send_mail($mail_to, $thm, $msg, $picture);
  
// Вспомогательная функция для отправки почтового сообщения с вложением
  
function send_mail($to, $thm, $html, $path)
  {
    
$fp = fopen($path,"r");
    if (!
$fp)
    {
      print
"Файл $path не может быть прочитан";
      exit();
    }
    
$file = fread($fp, filesize($path));
    
fclose($fp);
    
    
$boundary = "--".md5(uniqid(time())); // генерируем разделитель
    
$headers .= "MIME-Version: 1.0\n";
    
$headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
    
$multipart .= "--$boundary\n";
    
$kod = 'koi8-r'; // или $kod = 'windows-1251';
    
$multipart .= "Content-Type: text/html; charset=$kod\n";
    
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
    
$multipart .= "$html\n\n";

    
$message_part = "--$boundary\n";
    
$message_part .= "Content-Type: application/octet-stream\n";
    
$message_part .= "Content-Transfer-Encoding: base64\n";
    
$message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
    
$message_part .= chunk_split(base64_encode($file))."\n";
    
$multipart .= $message_part."--$boundary--\n";

    if(!
mail($to, $thm, $multipart, $headers))
    {
      echo
"К сожалению, письмо не отправлено";
      exit();
    }
  }
?>
 
 » Обсудить эту статью на форуме

 
 Сборник статей 
 Содержание раздела 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS