Arcane OS Docs Development only

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.

  • Reference

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);
    }
);

Reference group

Applications, terminal, and capabilities

Repository and reviewed source access