Mail-to-HTTP

Помимо любого другого адреса электронной почты, входящая почта может быть перенаправлена в виде 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 можно добавить в разделе «Переадресация» управления почтовыми ящиками.

Когда приходит новое электронное письмо, сервер отправляет 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)
Дополнительная информация

['mail_to_http']['body'] предназначен в первую очередь для писем, не содержащих больших вложений, поскольку если размер письма превышает 500 КБ, остальное будет отрезано.

Электронные письма размером более 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 через некоторое время.

Updated on 29. Apr 2024

Was this article helpful?

Related Articles