Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Отсылка писем с аттачами при помощи PHP Mail


Автор: php < >

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

  bool mail (string to, string subject, string message [, string additional_headers [,
  string additional_parameters]])
  

  
  Для того, чтобы она работала должны быть установлены:
  
  
  На Unix платформе - установленный и настроенный sendmail. Если его путь
  не в переменной окружения, то в php.ini нужно указать sendmail_path =/path/to/sendmail
  -t -i в разделе [mail function].
  
  На Windows платформе - иметь SMTP сервер. Его параматры нужно указать в
  php.ini в разделе [mail function]:
  
  SMTP=192.168.1.1
  sendmail_from=admin@example.com
  
  
  Функция вызывается как
  

  mail (кому, тема, тело, [дополнительные заголовки, [параметры]])
  

  
  Всё что нужно - это правильно сформировать все строковые параметры.
  
  Кому (копии и скрытые копии указываются в дополнительных заголовках):
  
  nobody@example.com
  
  John Smith <nobody@example.com>
  
  nobody@example.com, pupkin@example.com
  
  John Smith <nobody@example.com>, Ivan Pupkin <pupkin@example.com>
  
  Тема - любой текст без символов новой строки
  
  Тело - любой текст, в т.ч. HTML или MIME
  
  Заголовки - здесь можно указывать такие заголовки: From: Cc: Bcc: MIME-Version:
  Content-type: Reply-To: X-Mailer: X-Priority: Date: Content-Transfer-Encoding:
  Content-Disposition:
  
  From - От: "pupkin@example.com" или "Ivan Pupkin <pupkin@example.com>"
  
  Cc - Копия: также как и "кому"
  
  Bcc - Скрытая копия: также как и "Кому"; работает только на
  Unix
  
  Reply-To - если при ответе нужно подставлять адресата иного чем отправителя
  
  X-Priority - важность сообщения (по умолчанию 3)
  
  Заголовки разделяются <font color="#0000CC">\r\n</font> (На Unix можно
  только <font color="#0000CC">\n</font>)
  
  Если посылается письмо в HTML формате, нужно обязательно поставить следующие
  2 строчки в заголовках:
  

  <blockquote>MIME-Version: 1.0\r\n;<br>
  Content-Type: text/html; charset=&  quot;windows-1251&  quot;</blockquote>
  

  
  !!! Хочу послать письмо с аттачментом(ми) (например HTML с рисунками)
  
  Нужно использовать MIME (RFC1896, RFC2045, RFC2046, RFC2047, RFC2048, RFC2049).
  Для этого нужно сначала считать файл в переменную и закодировать его в безопасную
  base64 кодировку с помощью функции base64_encode(). В заголовке нужно указать:
  

  MIME-Version: 1.0\r\n<br>
  Content-Type: multipart/mixed; boundary=&  quot;$delimiter&  quot;
  

  
  Где $delimiter - любая строка, можно случайная. multipart/mixed можно заменить
  на multipart/alternative.
  
  $delimiter=&  quot;----=_Разделитель_Блоков_=----&  quot;
  
  А в теле письма разделить разные типы данных boundary ($delimiter) и указать их Content-Type:
  

  <?php
  $body="This is a multi-part message in MIME format.";<br>
  $body.="\r\n\r\n".$delimiter;<br>
  $body.="Content-Type: text/plain; charset=\"windows-1251\"\r\n\r\n";<br>
  $body.="Content-Transfer-Encoding: quoted-printable";<br>
  $body.="Привет Иван! Шлю тебе как и обещал фотку и реферат";<br>
  $body.="\r\n\r\n".$delimiter;<br>
  $body.="Content-Type: image/jpeg; name=\"meeting.jpg\"";<br>
  $body.="Content-Transfer-Encoding: base64";<br>
  $body.="Content-Disposition: attachment; filename=\"meeting.jpg\"\r\n\r\n";<br>
  $body.=base64_encode($file1);<br>
  $body.="\r\n\r\n".$delimiter; <br>
  $body.="Content-Type: application/msword; name=\"referat.doc\"";
  <br>
  $body.="Content-Transfer-Encoding: base64";<br>
  $body.="Content-Disposition: attachment; filename=\"referat.doc\"\r\n\r\n";<br>
  $body.=base64_encode($file2);<br>
  $body.="\r\n\r\n".$delimiter;
  ?>
  

  
  Приведу несколько примеров:
  Простое использование функции php mail
  

  mail("rasmus@lerdorf.on.ca", "My Subject", "Line 1\nLine 2\nLine 3");
  

  Использование дополнительных заголовков php mail
  

  mail("nobody@aol.com", "the subject", $message,
      "From: webmaster@$SERVER_NAME\nReply-To: webmaster@$SERVER_NAME\nX-Mailer: PHP/" . phpversion());
  

  Создание комплексного письма при помощи PHP
  

  /* recipients */
  $recipient .= "Mary <mary@u.college.edu>" . ", " ; //note the comma
  $recipient .= "Kelly <kelly@u.college.edu>" . ", ";
  $recipient .= "ronabop@php.net";
  
  /* subject */
  $subject = "Birthday Reminders for August";
  
  /* message */
  $message .= "The following email includes a formatted ASCII table\n";
  $message .= "Day \t\tMonth \t\tYear\n";
  $message .= "3rd \t\tAug \t\t1970\n";
  $message .= "17rd\t\tAug \t\t1973\n";
  
  /* you can add a stock signature */
  $message .= "--\r\n"; //Signature delimiter
  $message .= "Birthday reminder copylefted by public domain";
  
  /* additional header pieces for errors, From cc's, bcc's, etc */
  
  $headers .= "From: Birthday Reminder <birthday@php.net>\n";
  $headers .= "X-Sender: <birthday@php.net>\n";
  $headers .= "X-Mailer: PHP\n"; // mailer
  $headers .= "X-Priority: 1\n"; // Urgent message!
  $headers .= "Return-Path: <birthday@php.net>\n";  // Return path for errors
  
  /* If you want to send html mail, uncomment the following line */
  // $headers .= "Content-Type: text/html; charset=iso-8859-1\n"; // Mime type
  
  $headers .= "cc: birthdayarchive@php.net\n"; // CC to
  $headers .= "bcc: birthdaycheck@php.net, birthdaygifts@php.net"; // BCCs to
  
  /* and now mail it */
  mail($recipient, $subject, $message, $headers);
  

  
  В принципе овладев техникой отправки файлов с сервера на электронную почту и имея корпоративный "почтовый" интернет дома можно скачивать много файлов посредством одной лишь электронной почты. А для перекачки файлов с любого интернет сервера на корпоративный сервер обычно используется fopen, но об этом как-нибудь позже.

Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS