RegisterEmail API¶
Registers an email message as a document in infoRouter at the specified path. The email body, metadata (sender, recipients, CC, BCC, subject, sent date), and any attachments are stored as a single .EMAIL document in the target folder. Use this API to archive emails directly from an email client or integration.
Endpoint¶
Methods¶
-
GET
/srv.asmx/RegisterEmail?AuthenticationTicket=...&TargetPath=...&Senders=...&... -
POST
/srv.asmx/RegisterEmail(form data) -
SOAP Action:
http://tempuri.org/RegisterEmail
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
AuthenticationTicket |
string | Yes | Authentication ticket obtained from AuthenticateUser. |
TargetPath |
string | Yes | Full infoRouter path including the document name (e.g. /Finance/Emails/Meeting-Notes.EMAIL). The folder portion must exist. The file name portion becomes the document name. If you pass only .EMAIL as the file name, the system automatically prefixes the generated document ID. |
Senders |
string | Yes | Sender email address(es). Multiple addresses may be separated by a semicolon. |
Recipients |
string | Yes | Primary recipient address(es). Multiple addresses may be separated by a semicolon. |
CCAddress |
string | No | CC address(es). Multiple addresses may be separated by a semicolon. Pass empty string or omit if not applicable. |
BCCAddress |
string | No | BCC address(es). Multiple addresses may be separated by a semicolon. Pass empty string or omit if not applicable. |
SentDate |
DateTime | Yes | Date and time the email was sent. Format: yyyy-MM-ddTHH:mm:ss (ISO 8601). Used as the document's creation and modification date. |
Subject |
string | No | Email subject line. Pass empty string or omit if not applicable. |
header |
string | No | Raw email header block. Pass empty string or omit if not applicable. |
htmlBody |
string | No | HTML body content of the email. Pass empty string or omit if not applicable. |
textBody |
string | No | Plain text body content of the email. Pass empty string or omit if not applicable. |
AttachmentHandlers |
string | No | Semicolon-separated list of email attachment descriptors. Each entry has the format {filename}:{upload-handler-guid}. See the Attachments section below. Pass empty string or omit if there are no attachments. |
Attachments¶
Email attachments must be pre-uploaded using CreateUploadHandler and UploadFileChunk before calling RegisterEmail. Each uploaded file is identified by its upload handler GUID.
The AttachmentHandlers parameter format is:
Example:
-
Entries are separated by
; -
Within each entry, the file name and handler GUID are separated by
: -
The handler GUID must correspond to a valid, unexpired upload handler created with
CreateUploadHandler -
After a successful
RegisterEmailcall, the upload handlers are automatically deleted from the server
Response¶
Success Response¶
| Attribute | Description |
|---|---|
success |
"true" on success. |
error |
Empty string on success. |
DocumentID |
The infoRouter document ID assigned to the newly registered email document. |
DocumentName |
The actual document name used (may differ from TargetPath if auto-naming was applied). |
Error Response¶
Required Permissions¶
The calling user must be authenticated (anonymous users cannot register emails). The user must have add document permission on the target folder.
Example¶
POST Request¶
POST /srv.asmx/RegisterEmail HTTP/1.1
Content-Type: application/x-www-form-urlencoded
AuthenticationTicket=3f2504e0-4f89-11d3-9a0c-0305e82c3301
&TargetPath=/Finance/Emails/Q1-Budget-Meeting.EMAIL
&Senders=alice@example.com
&Recipients=bob@example.com;carol@example.com
&CCAddress=manager@example.com
&BCCAddress=
&SentDate=2024-03-15T14:30:00
&Subject=Q1 Budget Meeting Notes
&header=
&htmlBody=<html><body><p>Please find the meeting notes attached.</p></body></html>
&textBody=Please find the meeting notes attached.
&AttachmentHandlers=MeetingNotes.pdf:3f2504e0-4f89-11d3-9a0c-0305e82c3301
GET Request¶
GET /srv.asmx/RegisterEmail
?AuthenticationTicket=3f2504e0-4f89-11d3-9a0c-0305e82c3301
&TargetPath=/Finance/Emails/Q1-Budget-Meeting.EMAIL
&Senders=alice@example.com
&Recipients=bob@example.com
&CCAddress=
&BCCAddress=
&SentDate=2024-03-15T14:30:00
&Subject=Q1+Budget+Meeting+Notes
&header=
&htmlBody=
&textBody=Please+find+the+meeting+notes+attached.
&AttachmentHandlers=
HTTP/1.1
SOAP Request¶
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tns="http://tempuri.org/">
<soap:Body>
<tns:RegisterEmail>
<tns:AuthenticationTicket>3f2504e0-4f89-11d3-9a0c-0305e82c3301</tns:AuthenticationTicket>
<tns:TargetPath>/Finance/Emails/Q1-Budget-Meeting.EMAIL</tns:TargetPath>
<tns:Senders>alice@example.com</tns:Senders>
<tns:Recipients>bob@example.com</tns:Recipients>
<tns:CCAddress></tns:CCAddress>
<tns:BCCAddress></tns:BCCAddress>
<tns:SentDate>2024-03-15T14:30:00</tns:SentDate>
<tns:Subject>Q1 Budget Meeting Notes</tns:Subject>
<tns:header></tns:header>
<tns:htmlBody></tns:htmlBody>
<tns:textBody>Please find the meeting notes attached.</tns:textBody>
<tns:AttachmentHandlers></tns:AttachmentHandlers>
</tns:RegisterEmail>
</soap:Body>
</soap:Envelope>
Workflow -" register email with attachments¶
1. For each attachment file:
POST /srv.asmx/CreateUploadHandler?... -' returns handler GUID (e.g. "abc123...")
POST /srv.asmx/UploadFileChunk (repeat until all chunks uploaded)
2. POST /srv.asmx/RegisterEmail
AttachmentHandlers=Invoice.pdf:abc123...;Contract.docx:def456...
3. On success, response includes DocumentID and DocumentName of the new .EMAIL document
JavaScript¶
Every call answers XML with HTTP 200, success or not, so success is the thing to branch on and
errorCode is the number to report.
async function call(action, params) {
const response = await fetch(`/srv.asmx/${action}?${new URLSearchParams(params)}`);
const root = new DOMParser()
.parseFromString(await response.text(), 'text/xml')
.documentElement;
if (root.getAttribute('success') !== 'true') {
throw new Error(`${root.getAttribute('errorCode')}: ${root.getAttribute('error')}`);
}
return root;
}
Files an e-mail message into infoRouter as a document.
const root = await call('RegisterEmail', {
authenticationTicket: ticket,
TargetPath: '/Finance/Emails/2026-09-supplier-query', // the document path, without .email
Senders: 'supplier@example.com',
Recipients: 'accounts@example.com',
ccAddress: '',
bccAddress: '',
SentDate: '2026-09-01',
Subject: 'Invoice query',
header: '',
htmlBody: '<p>Could you check invoice 4471?</p>',
textBody: 'Could you check invoice 4471?',
AttachmentHandlers: ''
});
console.log(root.getAttribute('DocumentName')); // "2026-09-supplier-query.email"
TargetPath is the path of the document to create, not the folder to put it in - the same rule
Move and Copy follow. Aiming it at a folder creates a document beside that
folder, named after it. .email is appended unless the name already ends with it.
The document is dated from SentDate rather than from now, so its creation and modification dates are
when the message was sent. Recipients is required - an empty one is refused by model binding with
HTTP 400 - while ccAddress, bccAddress, Subject, header and AttachmentHandlers may all be
empty.
Notes¶
-
The document name is taken from the last path segment of
TargetPath. The parent folder path must already exist. -
If the document name is exactly
.EMAIL, the system automatically prepends the generated document ID to create a unique name. -
Email documents are stored with
PercentComplete=100(completed) and are not subject to the checkout/lock workflow. -
The document's creation date and modification date are set to
SentDate. The completion date is set to the current server time. -
Duplicate detection: If a document with the same name and the same email Message-ID header already exists in the target folder, the call fails to prevent duplicate registrations.
-
After a successful call, all referenced upload handlers are automatically deleted from the server.
-
Use
RegisterEmail1to register an email and also set user-defined keywords in a single call. -
Use
RegisterEmail2to specify the folder path and email document name as separate parameters instead of combining them inTargetPath.
Related APIs¶
-
RegisterEmail1 - Register an email with user-defined keywords
-
RegisterEmail2 - Register an email with the folder path and document name as separate parameters
-
CreateUploadHandler - Create an upload handler for pre-uploading email attachments
-
UploadFileChunk - Upload file content in chunks to an upload handler
-
GetDocument - Get the properties of the registered email document
Error Codes¶
The errorCode values this operation returns, checked against a running server:
errorCode |
When |
|---|---|
4010 |
the ticket is expired or unknown, or there is no ticket at all |
4090 |
a document of that name is already in the folder |
4041 |
no folder at the parent of TargetPath |
4030 |
the caller may not create documents there |
HTTP 400 |
a required string parameter was empty; refused by model binding, so there is no error document |
| Error | Description |
|---|---|
[900] Authentication failed |
Invalid or missing authentication ticket. |
[901] Session expired or Invalid ticket |
The ticket has expired or does not exist. |
| Anonymous users cannot perform this action | The authenticated user is an anonymous/guest user. |
| Folder not found | The folder portion of TargetPath does not exist. |
| Upload handler not found | One of the specified attachment handler GUIDs is invalid or has expired. |
| Invalid attachment handler format | The AttachmentHandlers string is malformed (missing : separator or invalid GUID). |
| Duplicate email | An email with the same document name and Message-ID already exists in the target folder. |
| Access denied | The user does not have add document permission on the target folder. |
SystemError:... |
An unexpected server-side error occurred. |