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
Функция вызывается как
<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>
Всё что нужно - это правильно сформировать все строковые параметры.
1. Кому (копии и скрытые копии указываются в дополнительных заголовках):
* nobody@example.com * John Smith <nobody@example.com> * nobody@example.com, pupkin@example.com * 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)
Заголовки разделяются <font color="#0000CC">\r\n</font> (На Unix можно только <font color="#0000CC">\n</font>)
Если посылается письмо в HTML формате, нужно обязательно поставить следующие 2 строчки в заголовках:<br> <blockquote>MIME-Version: 1.0\r\n;<br> Content-Type: text/html; charset="windows-1251"</blockquote>
Хочу послать письмо с аттачментом(ми) (например HTML с рисунками)
Нужно использовать MIME (RFC1896, RFC2045, RFC2046, RFC2047, RFC2048, RFC2049). Для этого нужно сначала считать файл в переменную и закодировать его в безопасную base64 кодировку с помощью функции base64_encode(). В заголовке нужно указать:
MIME-Version: 1.0\r\n<br> Content-Type: multipart/mixed; boundary="$delimiter"
Где $delimiter - любая строка, можно случайная. multipart/mixed можно заменить на multipart/alternative.
$delimiter="----=_Разделитель_Блоков_=----"А в теле письма разделить разные типы данных 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; ?>
Источник: http://www.wapcoder.com/articles/kak_otpravitq_pochtu/ |