Помимо любого другого адреса электронной почты, входящая почта может быть перенаправлена в виде HTTP-запроса на URL, что дает возможность программно обрабатывать почту.
Из соображений безопасности данных можно использовать только URL-адреса с тем же доменом, что и ссылающийся адрес электронной почты. Поддомены также разрешены.
Пример адреса добавленного в почтовый ящик name@example.com https://example.com/mail_to_http.php
.
Если URL/файл, принимающий запрос, защищен Apache Basic auth (HTTP Authentication), его имя пользователя и пароль должны быть добавлены к URL в виде: https://user:pwd@example.com/mail_to_http.php
Вы можете добавить URL-адреса переадресации Mail-to-http в панели управления Мой Zone
в разделе Веб-хостинг
-> Почта
-> Почтoвые ящики
, затем нажмите на почтовом ящике и выберите Переадресация
.
Когда приходит новое электронное письмо, сервер отправляет HTTP-запрос POST на URL-адрес. Переменные массива $_POST
id (string): id письма from (string): адрес электронной почты отправителя to (string): адрес электронной почты получателя headers (array): from (JSON object): имя и адрес электронной почты отправителя to (JSON array): имя и адрес электронной почты получателя date (string): время отправки (RFC 2822) message_id (string): уникальный Message-ID письма subject (string): тема письма mail_to_http (array): from (string): отправитель письма (SMTP протокол MAIL FROM:) rcpt (string): получатель письма (SMTP протокол RCPT TO:) real_length (int): полная длина необработанного письма (body) body (string): необработанное письмо (RFC822)
Электронные письма размером более 500 КБ могут быть получены в виде файлов .eml из массива $_FILES
.
Поля в массиве $_FILES
типичны для POST-загрузок:
PHP документация: POST method uploads
Массив переменных $_FILES
:
message (array): name (string): название файла .eml type (string): тип формата электронного письма tmp_name (string): абсолютный путь к временному файлу error (string): код ошибки size (string): размер файла в байтах
Если скрипт или веб-сервер, получивший POST-запрос, вернет код ошибки 5xx в качестве кода состояния HTTP, почтовый сервер сохранит письмо в очереди и попытается повторно отправить его по тому же URL через некоторое время.