Reference
Arcane.mail.send()
Validates and forwards one bounded request to the fixed loopback Arcane mail gateway without Core retry. The shared Mail module preflights the same native size bound. Availability requires explicit mail.send application admission on Microsoft NT/Linux Core hosts; Android does not project this method, and simulation fails explicitly.
This focused page is derived from the mechanically checked full member inventory.
Syntax
Arcane.mail.send({report, reportKey})
Parameters
Exact report with type, subject, to, and text and/or html; reportKey matches [A-Za-z0-9._:-]{8,128}; report JSON no larger than 786,432 bytes
Return value
Promise<{requestId,status,statusCode,sent,partial,uncertain}>
Description
Validates and forwards one bounded request to the fixed loopback Arcane mail gateway without Core retry. The shared Mail module preflights the same native size bound. Availability requires explicit mail.send application admission on Microsoft NT/Linux Core hosts; Android does not project this method, and simulation fails explicitly.
Overview
Arcane.mail.send({report, reportKey}) sends one bounded report to the fixed
local Arcane mail gateway. It is admitted only to explicitly approved reporting
applications with mail.send on Microsoft NT or Linux Core. Android does not
project it, and simulation fails explicitly. Core performs no automatic retry.
reportKey is the caller's idempotency key: 8–128 characters from letters,
numbers, period, underscore, colon, and hyphen. Reuse the same key only when
retrying the same logical report after an uncertain local-gateway outcome.
Input
report is an exact object with required type, subject, and to, plus
optional text and html; unknown fields are rejected. type is
"crisis_detected", "error", or "report". The trimmed subject is 1–160
characters without controls. to contains at most 50 email-shaped addresses,
each at most 254 characters; it may be empty only for an error report. At
least one of text or html must contain non-whitespace content. The serialized
report may not exceed 786,432 UTF-8 bytes.
Result
The exact result is
{requestId, status, statusCode, sent, partial, uncertain}. The combinations
are fixed:
status |
statusCode |
Flags |
|---|---|---|
accepted |
202 |
sent: true, partial: false, uncertain: false |
partially_accepted |
207 |
sent: false, partial: true, uncertain: false |
delivery_uncertain |
207 |
sent: false, partial: false, uncertain: true |
These are gateway acceptance states, not proof that every downstream recipient received a message. The method has a 450-second bridge timeout around a 440-second absolute gateway deadline and emits no dedicated mail event.
Errors and recovery
Malformed input is METHOD_CONTRACT_INPUT_INVALID. Simulation uses
MAIL_SEND_SIMULATION_UNAVAILABLE. Gateway connection, redirect, oversized or
invalid response, rejection, and timeout failures use the corresponding
MAIL_GATEWAY_*, MAIL_SEND_REJECTED, or MAIL_SEND_TIMEOUT code. Follow the
error's resolution; when a retry is appropriate, keep the same report and
reportKey so the gateway can deduplicate it. Never log report bodies or keys
that correlate sensitive reports.
Example
document.querySelector('#confirm-report-send')?.addEventListener(
'click',
async function handleConfirmedReportSend() {
const request = {
reportKey: `report:${crypto.randomUUID()}`,
report: {
type: 'report',
subject: 'Synthetic development report',
to: ['developer@example.com'],
text: 'This is synthetic test content.'
}
};
const result = await Arcane.mail.send(request);
console.log(result.requestId, result.status, result.statusCode);
}
);