базовый курс

ГРУППА КУРСА

Отправка почты

Функция mail() отправляет письмо по указанным адресам.

mail (получатели, тема, текст письма, заголовки)

Параметры:

получатели - один или несколько адресов, на которые отправляется письмо

тема - тема письма

текст письма - текст письма, разделённый на строки

заголовки - заголовки, устанавливающие дополнительные параметры

В случае удачной отправки функция возвращает true. Это означает, что письмо передано сереверу, но не означает, что оно доставлено получателям.

Получателей можно указать просто в виде имэйл адресов:

oleg@yandex.ru

<anna@yandex.ru>

C адресом можно указать имя:

Анна <anna@yandex.ru>

Текст письма должен быть разделён на строки, каждая не длиннее 70 символов. Строки разделяются символом перевода строки.

В письме могут неправильно отображаться русские буквы. Ситуацию исправляет установка в заголовках Content-Type с указанием кодировки.

В OpenServer есть эмитация отправки почты. Письма не отправляются, а сохраняются в определённую папку. Это позволяет посмотреть, как работают скрипты, отправляющие почту.

Создадим скрипт, отправляющий письмо:

+
1
2
<?php
header('Content-type: text/html; charset=utf-8');
3
4
5
6
$mesage = "Первая строка письма \r\n Вторая строка письма";
$send = mail('<oleg@mail.ru>', 'Тема письма', $mesage);
if ($send)
echo 'Письмо отправлено';

Если Вы используете OpenServer, то письмо должно находиться в следующей папке:

OSPanel/userdata/temp/email

Запустите предложенный скрипт. Он должен вывести сообщение "Письмо отправлено". Откройте указанную папку. В ней должен находиться текстовый файл, содержащий сообщение и другие параметры полученного письма.

Желательно в заголовке From указать отправителя. При отсутсвии указания существует большая вероятность того, что письмо попадёт в папку со спамом.

Если заголовков несколько, то они разделяются символом перевода строки.

Добавим в скрипт ещё одну отправку, но в более сложном виде. Текст оставим тот же самый:

7
8
9
10
11
$to='<oleg@yandex.ru>, <anna@yandex.ru>';
$headers='From: <viktor@example.ru>';
$send = mail($to, 'Тема письма', $mesage, $headers);
if ($send)
echo 'Письма отправлены';

Функция mail() работает не у всех хостинг-провайдеров. Некоторые провайдеры её отключают. Кроме того, нучно учитывать, что почтовые службы проверяют писма. И если писмо выглядит подозрительно, то оно отправляется в спам или вообще не принимается. Письма, отправленные скриптами могут быть подозрительными из за отсутствия важных заголовков. Поэтому нужно проверять, как основные почтовые службы реагируют на ваши писма. Принимают ли они письма, которые отправляют ваши скрипты.