mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-05 21:48:59 +01:00
dfef4ce0c5
currently we can launch (interactive) compose windows, if user is online ToDo: - send mails for a user - authentication as arbitrary user with an API token
4.2 KiB
4.2 KiB
EGroupware REST API for Mail
Currently only sending mail or launching interactive compose windows
Implemented requests (relative to https://example.org/egroupware/groupdav.php)
GET /mail
get different mail accounts available to user
Example: Querying available identities / signatures
curl -i https://example.org/egroupware/mail --user <user> -H 'Accept: application/json'
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"responses": {
"/ralf/mail/1": "Ralf Becker boulder.egroupware.org <ralf@boulder.egroupware.org>",
"/ralf/mail/52": "Ralf Becker <sysop@testbox.egroupware.org>",
"/ralf/mail/85": "Ralf Becker <RalfBeckerKL@gmail.com>"
}
}
POST /mail[/<id>]
send mail for default or given account
Example: Sending mail
The content of the POST request is a JSON encoded object with following attributes
to
: array of strings with (RFC882) email addresses like["info@egroupware.org", "Ralf Becker <rb@egroupware.org"]
cc
: array of strings with (RFC882) email addresses (optional)bcc
: array of strings with (RFC882) email addresses (optional)replyTo
: string with (RFC822) email address (optional)subject
: string with subjectbody
: string plain text body (optional)bodyHtml
: string with html body (optional)attachments
: array of strings returned from uploaded attachments (see below) or VFS path["/mail/attachment/<token>", "/home/<user>/<filename>", ...]
attachmentType
: one of the following strings (optional, default "attach")- "attach" send as attachment
- "link" send as sharing link
- "share_ro" send a readonly share using the current file content (VFS only)
- "share_rw" send as writable share (VFS and EPL only)
shareExpiration
: "yyyy-mm-dd", default not accessed in 100 days (EPL only)sharePassword
: string with password required to access share, default none (EPL only)folder
: folder to store send mail, default Sent folder
curl -i https://example.org/egroupware/mail --user <user> \
-X POST -H 'Content-Type: application/json' \
--content `{"to":["info@egroupware.org"],"subject":"Testmail","body":"This is a test :)\n\nRegards"}`
HTTP/1.1 204 No Content
If you are not authenticated you will get:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="EGroupware CalDAV/CardDAV/GroupDAV server"
X-WebDAV-Status: 401 Unauthorized
If there is an error sending the mail you will get:
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: ...
{"error": 123,"message":"SMTP Server not reachable"}
POST /mail[/<id>]/compose
launch compose window
Example: Opening a compose window
Parameters are identical to send mail request above, thought there are additional responses:
- compose window successful opened
HTTP/1.1 200 OK
Content-Type: application/json
{
"status": 200,
"message": "Request to open compose window sent",
"extra": {
"preset": {
"to": [
"Birgit Becker <bb@egroupware.org"
],
"cc": [
"info@egroupware.org"
],
"subject": "Testmail",
"body": "<pre>This is a test :)\n\nRegards</pre>",
"mimeType": "html",
"identity": "52"
}
}
}
- user is not online, therefore compose window can NOT be opened
404 Not found
Content-Type: application/json
{
"error": 404,
"message": "User 'ralf' (#5) is NOT online"
}
POST /mail/attachments/<filename>
upload mail attachments
Example: Uploading an attachment to be used for sending or composing mail
The content of the POST request is the attachment, a Location header in the response gives you a URL to use in further requests, instead of the attachment.
curl -i https://example.org/egroupware/mail/attachment/<filename> --user <user> \
--data-binary @<file> -H 'Content-Type: <content-type-of-file>'
HTTP/1.1 204 No Content
Location: https://example.org/egroupware/mail/attachment/<token>