mail · Почта 26.700.0 Заметное

mail 26.700.0: статистика писем для AI-ассистента и предупреждение о провайдерах

3 мин чтения

Модуль научился считать входящие по ящику или сотруднику за период и отдавать это AI-ассистенту как инструмент. Плюс появился слой ограничений по почтовым провайдерам. Основной риск обновления — не удаления, а вставка аргументов в середину конструкторов двух DTO.

Счётчик входящих и tool для ассистента

Новый MessageStatistics::getStatistics() возвращает MailStatisticsDto с incomingCount. Поверх него — GetMailStatisticsTool с ACTION_NAME = 'get_mail_statistics' для AI Assistant: ассистент теперь может ответить на «сколько писем пришло на этой неделе», не выдумывая цифру.

Два правила, зашитые в реализацию:

  • Входящее — это письмо в входящих папках, определяется по DIR_MD5. То есть считается физическое расположение письма, а не флаг направления.
  • mailboxId и employeeId вместе передать нельзя — tool вернёт ошибку. employeeId разворачивается в ящики владельца, но только те, что доступны текущему пользователю. Иначе через ассистента можно было бы посчитать чужую почту.

Права разруливает новый MailboxAccess с методами getAccessibleOwnerMailboxIds() и resolveUserMailboxIds() — тот же слой пригодится, если делаете свои отчёты по почте.

Ограничение провайдеров: Яндекс и Mail.ru

Появился ProviderAccessRestriction (isFeatureEnabled(), isRestricted(), resolveProviderName()), включается опцией mail / provider_restriction_notice = Y. Правила: для yandex ограничение показывается на бесплатных доменах (yandex.*, ya.ru, narod.ru), для mail.ru / mailru — всегда. Пользователь видит предупреждение в форме подключения ящика (попап provider-restriction-popup.ts).

Это не блокировка подключения, а именно уведомление — и по всему видно, что реакция на изменения на стороне самих провайдеров, а не решение Битрикса. Держите опцию в голове: если сотрудники жалуются на новый попап при подключении личной почты, выключается он там же.

Что сломается

Оба изменения — вставка параметров в середину, поэтому именованные аргументы переживут обновление, а позиционные молча разъедутся:

  • SearchMessagesDto::__construct — перед $limit и $offset вставлены ?array $bindings = null и ?array $excludeBindings = null. Позиционный вызов отправит ваш $limit в $bindings.
  • SearchMessagesByTasksRequest::__construct — вторым аргументом добавлен int $offset = 0, всё остальное сдвинулось.

TaskFinder::findTasksLinkedToMail() получил $offset = 0 в конец — этот совместим.

Если вы конструируете эти DTO, самое время перейти на именованные аргументы: тип у ?array и int разный, но при null в позиции $limit ошибки может и не быть — будет тихо неправильная выборка.

Что ещё появилось

  • MessageFilter::addIncludeBindings() / addExcludeBindings() — фильтр по привязкам сущностей (это и есть те самые bindings в DTO).
  • QueryBuilder::countMailMessages(), MessageSearch::count() — счётчик без выборки строк.
  • DateTimeParser::getNullableLowerBound() / getNullableUpperBound() / validateRange() — разбор интервала дат с валидацией. Пригодился как раз для периода в статистике.
  • У MessageByTaskSearch стали публичными buildMessageUrls, filterAccessibleRows, loadAccessByMessageTask, loadMessages — можно переиспользовать отдельные шаги, не гоняя весь поиск.

Что делать

  1. Проверьте позиционные вызовы SearchMessagesDto и SearchMessagesByTasksRequest — это главный риск обновления.
  2. Считаете почту сами — посмотрите на MessageStatistics и MailboxAccess, скорее всего свой код можно сократить.
  3. Решите, нужен ли вам попап ограничения провайдеров (mail / provider_restriction_notice).

Читайте дальше

mail 26.900.0 Заметное Свежее

Mail 26.900.0: общие подписи ломают старый API, а тяжёлые вложения переезжают на Диск

Модуль mail получил один из самых жирных релизов за последнее время: 523 файла, +39 182/−3 131 строк. Внутри — три большие фичи (общие подписи, автоперенос тяжёлых вложений на Диск, избранное с AI-классификацией писем), переработанный IMAP-синк истории и три новые таблицы в БД. Если вы кастомизирова...

4 мин
mail 26.800.0 Заметное

mail 26.800.0: массовые действия над ящиками и fail-closed привязка письма к посту

Грид почтовых ящиков получил панель массовых действий: включить CRM или календарь пачке ящиков, отключить пачку ящиков разом. Фича спрятана за флагом. Плюс аккуратная переделка привязки письма к посту ленты и перевод установщика на миграции.

3 мин
landing 26.1000.0 Заметное Свежее

Landing 26.1000.0: удалён Block::isContains, ссылки теперь режутся по белому списку схем

Обновление `landing` 26.1000.0 (сборка от 24.08.2026) — это на 90% security-хардening плюс новая песочница для превью страниц «на устройствах». Дифф огромный — 1300 файлов, +73 тысячи строк — но почти всё это пересобранные JS-бандлы, контентные блоки и webp вместо png. Содержательного PHP — примерно...

4 мин
security 26.200.0 Безопасность Свежее

Security 26.200.0 не ставится на маке и Windows: фатал «Cannot redeclare class» прямо в апдейтере

Обновление security 26.200.0 у нас не установилось вообще: апдейтер умирает с фаталом посреди своего скрипта. Если ваш прод на Linux — выдыхайте, вас это не касается. А вот если вы ставите обновления в локальной разработке на macOS или Windows (Docker с bind-mount проектной папки — это ровно тот слу...

4 мин
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти