# EGroupware REST API for Mail
Authentication is via Basic Auth with username and a password, or a token valid for:
- either just the given user or all users
- CalDAV/CardDAV Sync (REST API)
- E-Mail application
> Currently only implemented is 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
```bash
curl -i https://example.org/egroupware/groupdav.php/mail --user -H 'Accept: application/json'
HTTP/1.1 200 OK
Content-Type: application/json
{
"responses": {
"/ralf/mail/1": "Ralf Becker boulder.egroupware.org ",
"/ralf/mail/52": "Ralf Becker ",
"/ralf/mail/85": "Ralf Becker "
}
}
```
- ```POST /mail[/]``` send mail for default or given identity
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 ", "/home//", ...]```
- ```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" or e.g. "+2days", 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
- ```priority```: 1: high, 3: normal (default), 5: low
```
curl -i https://example.org/egroupware/groupdav.php/mail --user \
-X POST -H 'Content-Type: application/json' \
--data-binary '{"to":["info@egroupware.org"],"subject":"Testmail","body":"This is a test :)\n\nRegards"}'
HTTP/1.1 200 Ok
Content-Type: application/json
{
"status": 200,
"message": "Mail successful sent"
}
```
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 you use a token to authenticate, SMTP must work without password, or you need an SMTP-only account!
It's probably still not possible to save a successful sent mail to the Sent folder:
```
{
"status": 200,
"warning": "Mail NOT saved to Sent folder, as no user password",
"message": "Mail successful sent"
}
```
If there is an error sending the mail you will get:
```
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
{"error": 500,"message":"SMTP Server not reachable"}
```
- ```POST /mail[/]/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"
}
```
- 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/``` 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/groupdav.php/mail/attachments/ --user \
--data-binary @ -H 'Content-Type: '
HTTP/1.1 302 Found
Location: https://example.org/egroupware/groupdav.php/mail/attachment/
{
"status": 200,
"message": "Attachment stored",
"location": "/mail/attachments/--xM35lY"
}
```