Мобильная почта 26.500.0: черновики, цепочки писем, подписи и большие файлы через Диск
Mailmobile 26.500.0 добавляет автосохранение черновиков, цепочки писем, избранное, метки и управление подписями. При отправке появились тема через BitrixGPT, получатели из телефонной книги и большие файлы ссылкой на Диск. Разработчикам своих вызовов мобильной почты нужно учесть CSRF и ограничения HTTP-методов.
Новое
Письмо сохраняется между открытиями формы
В приложении появилась папка «Черновики» и автосохранение письма. Если для CRM-карточки уже есть черновик, приложение предлагает продолжить его. Одновременное редактирование с другого устройства сопровождается сообщением «Черновик занят другим устройством». Клиент использует методы mail.api.draft.* и crm.api.mail.draft.*.
Список писем умеет показывать цепочки; группировку можно отключить в меню. Для своего клиента у Message::getMessageListAction() появились необязательные cursor, sort, supportsGroupedRows и labelId. Последний параметр нужен для отбора по метке. Метки назначаются с телефона, а новые создаются в веб-версии. Отдельная виртуальная папка собирает избранные письма.
Подписи и шаблоны доступны при отправке
Мобильная почта показывает список подписей, создаёт текстовые подписи, привязывает их к ящикам и предлагает выбрать подпись в форме отправки. Сервер берёт подготовленные подписи через Bitrix\Main\Mail\Sender::prepareUserMailboxesWithSignatures(), включая подставленные макросы. Источник подписей расширяется событием main OnMailSenderListBuild.
Шаблон письма можно вставить, заменить им текст или сохранить из отправляемого письма. Эта функция зависит от Public\Features\MailTemplatesFeature, выключенного по умолчанию. У избранного и меток флаги включены по умолчанию, но проверяют доступность соответствующих функций модуля mail.
BitrixGPT предлагает тему
Действие mailmobile.api.Message.generateSubject принимает тело письма, режим, исходное сообщение и текущую тему. Ответ содержит готовый subject либо queueHash для генерации через очередь. Доступность можно узнать через getSubjectGenerationAvailable; CRM-режим сервер определяет по сущности-владельцу письма.
В форме также появились получатели из телефонной книги устройства. Их лимит берётся из RecipientLimitService модуля mail, а при его отсутствии остаётся прежний лимит до десяти получателей. Из письма можно создать пост в ленте с привязкой к письму или вставить ссылку на свободные слоты календаря.
Большое вложение становится ссылкой
В сценарии больших вложений загрузчик кладёт файл на личный Диск пользователя. Лимит одного файла тогда определяется Диском, а отправка использует ссылку. После отправки приложение спрашивает, удалить ли файл с Диска. Функция недоступна на тарифах ниже «Стандартного» и публикует ограничение mail_large_attachment_disk_upload через событие mobile:onTariffRestrictionsCollect.
Флаги подписей, больших вложений и телефонной книги используют опции mailmobile:signatures_enabled, large_attachment_enabled и device_contacts_enabled со значением по умолчанию Y. Для больших вложений дополнительно проверяется доступность самого сценария.
Что сломается
Передавайте CSRF и отправляйте письмо через POST
В префильтры всех действий mailmobile.api.Message.* добавлен Csrf, поэтому GET-запрос тоже требует корректный sessid. Действия sendMessage и generateSubject принимают только POST. Если свой мобильный экран или расширение вызывали их GET-запросом, смените метод и передавайте CSRF-токен.
Подписи зависят от версии main
Прежний провайдер читал подписи из UserSignatureTable. Новый использует Sender::prepareUserMailboxesWithSignatures(), но при отсутствии этого метода в main возвращает отправителей без подписей. Если обновляете модули выборочно, проверьте подпись в мобильной форме после установки mailmobile: совместимость с прежним main сохраняет список отправителей, но не подписи.
При включённом сценарии больших вложений учитывайте новое место хранения загруженных файлов. Приложение сообщает пользователю, что вложения сохраняются на Диске; лимит письма больше не описывает предел загрузки одного такого файла.
Удалено JN-расширение mail/message/elements/icon с экспортами Icon и MoreButton. Проверьте зависимости своих мобильных расширений, если подключали его.
Устаревшие и удалённые API в этой версии
| Символ | Статус | Чем заменять |
|---|---|---|
mail/message/elements/icon::Icon
|
Удалено | — |
mail/message/elements/icon::MoreButton
|
Удалено | — |