mail.message.list
Получить список писем
Описание
Метод относится к REST 3.0. Особенности вызова и формат ответа новой версии API описаны в обзоре REST 3.0.
Метод mail.message.list возвращает список писем по заданным условиям.
Параметры
mailboxId
integer
необязательный
Идентификатор почтового ящика.
Идентификатор можно получить методом mail.mailbox.list
searchQuery
string
необязательный
Строка для поиска писем по содержимому и метаданным письма
dateFrom
string
необязательный
Начало периода выборки писем в формате ISO 8601, например 2026-01-01T00:00:00+03:00
dateTo
string
необязательный
Конец периода выборки писем в формате ISO 8601, например 2026-01-31T23:59:59+03:00
isSeen
boolean
необязательный
Фильтр по признаку прочтения письма.
Возможные значения:
true— только прочитанныеfalse— только непрочитанные
hasAttachments
boolean
необязательный
Фильтр по наличию вложений.
Возможные значения:
true— только письма с вложениямиfalse— только письма без вложений
folder
string
необязательный
Имя или путь почтовой папки
pagination
object
необязательный
Параметры постраничной навигации:
- page — номер страницы
- limit — количество записей на страницу, по умолчанию 25, максимум 200
- offset — смещение записей. Если переданы page и limit, смещение вычисляется автоматически
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"mailboxId":1,"searchQuery":"договор","hasAttachments":true,"pagination":{"page":1,"limit":20,"offset":0}}' \
https://**put_your_bitrix24_address**/rest/api/**put_your_user_id_here**/**put_your_webhook_here**/mail.message.list
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"mailboxId":1,"searchQuery":"договор","hasAttachments":true,"pagination":{"page":1,"limit":20,"offset":0},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/api/mail.message.list
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame, ISODate } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
type MailMessageListResult = {
items: MailMessageItem[]
}
type MailMessageItem = {
id: number
mailboxId: number
mailboxEmail: string
subject: string
from: string
to: string
cc: string
date: ISODate | null
isSeen: boolean
hasAttachments: boolean
url: string
bindings: unknown[]
body: string
}
try {
// mail.message.list returns a single page (default 25, max 200 records). For the whole result set
// use a list helper: $b24.actions.v3.callList.make() returns every record as one
// array, $b24.actions.v3.fetchList.make() yields them in chunks (async generator).
// NOTE: the list helpers do not accept `order` (it is excluded from their params, so
// passing it is a TS error) — keep this call.make + `pagination` variant when sort matters.
const response = await $b24.actions.v3.call.make<MailMessageListResult>({
method: 'mail.message.list',
params: {
mailboxId: 1,
searchQuery: 'contract',
hasAttachments: true,
pagination: {
page: 1,
limit: 20,
offset: 0,
},
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Messages fetched:', result.items.length, result.items[0])
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function fetchMessageList() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
// mail.message.list returns a single page (default 25, max 200 records). For the whole result set
// use a list helper: $b24.actions.v3.callList.make() returns every record as one
// array, $b24.actions.v3.fetchList.make() yields them in chunks (async generator).
// NOTE: the list helpers do not accept `order` (it is excluded from their params, so
// passing it is a TS error) — keep this call.make + `pagination` variant when sort matters.
const response = await $b24.actions.v3.call.make({
method: 'mail.message.list',
params: {
mailboxId: 1,
searchQuery: 'contract',
hasAttachments: true,
pagination: {
page: 1,
limit: 20,
offset: 0,
},
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Messages fetched:', result.items.length, result.items[0])
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', fetchMessageList)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
pagination = {
"page": 1,
"limit": 20,
"offset": 0,
}
try:
bitrix_response = client.mail.message.list(
mailbox_id=1,
search_query='договор',
has_attachments=True,
pagination=pagination,
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
try {
$response = $b24Service
->core
->call(
'mail.message.list',
[
'mailboxId' => 1,
'searchQuery' => 'договор',
'hasAttachments' => true,
'pagination' => [
'page' => 1,
'limit' => 20,
'offset' => 0
]
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error: ' . $e->getMessage();
}
BX24.callMethod(
'mail.message.list',
{
mailboxId: 1,
searchQuery: 'договор',
hasAttachments: true,
pagination: {
page: 1,
limit: 20,
offset: 0
}
},
function(result){
console.info(result.data());
console.log(result);
}
);
require_once('crest.php');
$result = CRest::call(
'mail.message.list',
[
'mailboxId' => 1,
'searchQuery' => 'договор',
'hasAttachments' => true,
'pagination' => [
'page' => 1,
'limit' => 20,
'offset' => 0
]
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "mail.message.list", b24.Params{
"mailboxId": 1,
"searchQuery": "договор",
"hasAttachments": true,
"pagination": b24.Params{
"page": 1,
"limit": 20,
"offset": 0,
},
}, b24.WithIdempotent())
if err != nil {
return fmt.Errorf("mail.message.list: %w", err)
}
// Метод заворачивает ответ в объект с ключом "items".
raw, ok := b24.Unwrap(res.Result, "items")
if !ok {
return fmt.Errorf("в ответе нет ключа items")
}
var items []struct {
ID b24.ID `json:"id"`
MailboxID b24.ID `json:"mailboxId"`
MailboxEmail string `json:"mailboxEmail"`
Subject string `json:"subject"`
From string `json:"from"`
To string `json:"to"`
}
if err := json.Unmarshal(raw, &items); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
for _, it := range items {
fmt.Println(it.ID)
}
Ответ
HTTP-статус: 200
{
"result": {
"items": [
{
"id": 15,
"mailboxId": 1,
"mailboxEmail": "user@example.com",
"subject": "Договор",
"from": "client@example.com",
"to": "user@example.com",
"cc": "",
"date": "2026-05-25T10:00:00+03:00",
"isSeen": true,
"hasAttachments": true,
"url": "https://example.bitrix24.ru/mail/message/15/",
"bindings": [],
"body": "Текст письма"
}
]
},
"time": {
"start": 1779819678,
"finish": 1779819678.84803,
"duration": 0.8480300903320312,
"processing": 0,
"date_start": "2026-05-26T21:21:18+03:00",
"date_finish": "2026-05-26T21:21:18+03:00",
"operating_reset_at": 1779820278,
"operating": 0
}
}
Возвращаемые данные
result
object
Объект с данными ответа
items
array
Массив объектов писем
items[]
object
Объект письма
id
integer
Идентификатор письма
mailboxId
integer
Идентификатор почтового ящика
mailboxEmail
string
Email почтового ящика
subject
string
Тема письма
from
string
Отправитель письма
to
string
Получатели письма
cc
string
Копия письма
date
string
Дата и время письма
isSeen
boolean
Признак прочтения письма
hasAttachments
boolean
Признак наличия вложений
url
string
Ссылка на письмо
bindings
array
Связи письма с объектами
body
string
Тело письма
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error": {
"code": "BITRIX_REST_V3_EXCEPTION_INVALIDPAGINATIONEXCEPTION",
"message": "Не удается распознать параметр пагинации `{\"limit\":\"abc\"}`"
}
}
| Код | Описание | Значение |
|---|---|---|
Поле |
Описание ошибки | Как исправить |
| — | Доступ запрещен | Проверьте права пользователя и scope mail |

