::: PHP.com.ua - учимся вместе. ::: ::: PHP.com.ua - учимся вместе. :::



 
   - Вакансия PHP-программист, Днепропетровск...
  - Проблема с передачей переменной в PHP ск...
  - Как хранить конфигурацию cms'ки?
  - Проблема с сортировкой массива
  - коллизии md5
  - Странный глюк функции date
  - Скроллинг в iframe


Главная
Новости
Статьи
Шпаргалки
Файлы
О проекте
Форум
Футболки


FREEhost.com.ua - купил хостинг 10 у.е. на Begun в подарок.

iName.com.ua - регистрация доменных имен и хороший хостинг.

Библиотека программиста - нужный вам исходник или документация по необходимому для вас языку программирования.

Designclub - Клуб дизайнеров Украины.

Регистрация доменов
Хостинг

 HowtoForge.ORG.UA - Это первый Украинский ресурс развития open source программного обеспечения


Путь: Статьи > Новичкам

Новичкам

Автор: - Yurik
Дата публикации - 21.5.2005
Просмотров: - 4361

Как отослать почту


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

  1. На Unix платформе - установленный и настроенный sendmail. Если его путь
    не в переменной окружения, то в php.ini нужно указать sendmail_path =/path/to/sendmail
    -t -i
    в разделе [mail function].

  2. На Windows платформе - иметь SMTP сервер. Его параматры нужно указать в
    php.ini в разделе [mail function]:

    SMTP=192.168.1.1

    sendmail_from=admin@example.com


Функция вызывается как [quote]<font color="#0000CC">mail</font><font color="#006600">(</font><font color="#CC0000">кому</font>, <font color="#CC0000">тема</font>, <font color="#CC0000"> тело</font>, [<font color="#CC0000">дополнительные
заголовки</font>, [<font color="#CC0000">параметры</font>]]<font color="#006600">)</font>[/quote]
Всё что нужно - это правильно сформировать все строковые параметры.



  1. Кому (копии и скрытые копии указываются в дополнительных заголовках):

    • nobody@example.com
    • John Smith <nobody@example.com>
    • nobody@example.com, email=pupkin@example.com]pupkin@example.com/email]
    • John Smith <nobody@example.com>, Ivan Pupkin <pupkin@example.com>

  2. Тема - любой текст без символов новой строки
  3. Тело - любой текст, в т.ч. HTML или MIME
  4. Заголовки - здесь можно указывать такие заголовки: 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)

    [quote]Заголовки разделяются <font color="#0000CC">\r\n</font> (На Unix можно
    только <font color="#0000CC">\n</font>)[/quote]

[nb]Если посылается письмо в HTML формате, нужно обязательно поставить следующие
2 строчки в заголовках:<br>
<blockquote>MIME-Version: 1.0\r\n;<br>
Content-Type: text/html; charset=&quot;windows-1251&quot;</blockquote>[/nb]
[p]Хочу послать письмо с аттачментом(ми) (например HTML с рисунками)[/p]
Нужно использовать MIME (RFC1896, RFC2045,
RFC2046, RFC2047,
RFC2048, RFC2049).
Для этого нужно сначала считать файл в переменную и закодировать его в безопасную
base64 кодировку с помощью функции base64_encode(). В заголовке нужно указать:


[quote]MIME-Version: 1.0\r\n<br>
Content-Type: multipart/mixed; boundary=&quot;$delimiter&quot;[/quote]
Где $delimiter - любая строка, можно случайная. multipart/mixed можно заменить
на multipart/alternative.
[quote]$delimiter=&quot;----=_Разделитель_Блоков_=----&quot;[/quote]
А в теле письма разделить разные типы данных boundary ($delimiter) и указать их Content-Type:
[code]<?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;
?>[/code]


[nb]Обратите внимание, что каждый блок данных разделяется сзади и спереди пустой
строкой (\r\n\r\n) и в конце стоит &quot;boundary&quot;.[/nb]



Обсудить в ФОРУМе - комментариев ()


Путь: Статьи > Новичкам

Если вы заметили орфографическую, стилистическую или другую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Контакты Design by webFaction Ukrainian PHP Group 2004-2005