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

Как отослать почту
Если Вам нужно послать сообщение администратору, пользователю, сделать рассылку,
отправить отчет по електронной почте, то проще всего это сделать с помощью встроенной
функции mail(). Для того, чтобы она работала должны быть установлены:
- На 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,
- John Smith , Ivan Pupkin
- Тема - любой текст без символов новой строки
- Тело - любой текст, в т.ч. 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 "
- Cc - Копия: также как и "кому"
- Bcc - Скрытая копия: также как и "Кому"; работает только на
Unix - Reply-To - если при ответе нужно подставлять адресата иного чем отправителя
- X-Priority - важность сообщения (по умолчанию 3)
Заголовки разделяются \r\n (На Unix можно
только \n)
Если посылается письмо в HTML формате, нужно обязательно поставить следующие
2 строчки в заголовках:
MIME-Version: 1.0\r\n;
Content-Type: text/html; charset="windows-1251"
Хочу послать письмо с аттачментом(ми) (например HTML с рисунками)
Нужно использовать MIME .
Для этого нужно сначала считать файл в переменную и закодировать его в безопасную
base64 кодировку с помощью функции base64_encode(). В заголовке нужно указать:
MIME-Version: 1.0\r\n
Content-Type: multipart/mixed; boundary="$delimiter"
Где $delimiter - любая строка, можно случайная. multipart/mixed можно заменить
на multipart/alternative.
$delimiter="----=_Разделитель_Блоков_=----"
А в теле письма разделить разные типы данных boundary ($delimiter) и указать их Content-Type:
$body="This is a multi-part message in MIME format.";
$body.="\r\n\r\n".$delimiter;
$body.="Content-Type: text/plain; charset=\"windows-1251\"\r\n\r\n";
$body.="Content-Transfer-Encoding: quoted-printable";
$body.="Привет Иван! Шлю тебе как и обещал фотку и реферат";
$body.="\r\n\r\n".$delimiter;
$body.="Content-Type: image/jpeg; name=\"meeting.jpg\"";
$body.="Content-Transfer-Encoding: base64";
$body.="Content-Disposition: attachment; filename=\"meeting.jpg\"\r\n\r\n";
$body.=base64_encode($file1);
$body.="\r\n\r\n".$delimiter;
$body.="Content-Type: application/msword; name=\"referat.doc\"";
$body.="Content-Transfer-Encoding: base64";
$body.="Content-Disposition: attachment; filename=\"referat.doc\"\r\n\r\n";
$body.=base64_encode($file2);
$body.="\r\n\r\n".$delimiter;
?>