Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
master
-
None
Description
The WebAdmin REST API allows to see mails in a mailQueue and in a mail repository. However, as of today, the amount of information that can be seen is limited, and has the following properties:
- The `name` that identifies the mail
- The envelope information (sender + recipients)
- And basic processing information (state and possible error).
Today:
curl -XGET http://ip:port/mailRepositories/file%3A%2F%2Fvar%2Fmail%2Ferror%2F/mails/mail-key-1
Will return:
{ "name": "mail-key-1", "sender": "sender@domain.com", "recipients": ["recipient1@domain.com", "recipient2@domain.com"], "state": "address-error", "error": "A small message explaining what happened to that mail..." }
We also should add the following properties in the view by default: `lastUpdated`, `remoteHost`, `remoteAddr`.
The basic answers becomes then:
{ "name": "mail-key-1", "sender": "sender@domain.com", "recipients": ["recipient1@domain.com", "recipient2@domain.com"], "state": "address-error", "error": "A small message explaining what happened to that mail...", "remoteHost": "smtp.apache.org", "remoteAddr":"175.26.53.48", "lastUpdated": "2018-01-28T14:31:00.000+0000" }
We need to be able to get more details about the mail object.
We should be able to pass an `additionalFields`.
Supported additional fields would be:
- `attributes`
- `perRecipientsHeaders`
- `headers`
- `body`
- `messageSize`
An example:
curl -XGET http://ip:port/mailRepositories/file%3A%2F%2Fvar%2Fmail%2Ferror%2F/mails/mail-key-1?additionalFields=attributes,headers,body,messageSize,perRecipientsHeaders
Will return:
{ "name": "mail-key-1", "sender": "sender@domain.com", "recipients": ["recipient1@domain.com", "recipient2@domain.com"], "state": "address-error", "error": "A small message explaining what happened to that mail...", "remoteHost": "smtp.apache.org", "remoteAddr":"175.26.53.48", "lastUpdated": "2018-01-28T14:31:00.000+0000", "messageSize": 452369, "attributes" : {"name1":"value1", "name2":"value2"}, "body": "My awesome body!!!", "perRecipientsHeaders": { "benwa@apache.org": { "headerName1":["value1", "value2"], "headerName2":["value3","value4"] } }, "headers" : { "headerName3":["value5", "value8"], "headerName4":["value6","value7"] } }
You will need to:
- in /server/protocols/webadmin/webadmin-mailrepository project:
- Modify MailDTO to add new mandatory fields.
- MailRepositoriesRoutesTest :: retrievingAMailShouldDisplayItsInformation to take into account these new mandatory fields.
Then:
- MailDTO Should contain an enum called AdditionalFields
- MailDTO::fromMail should take a List<AdditionalFields> as argument
- Modify MailRepositoriesRoutes in order to take into account this URL parameter.
Please note that:
- Unknown additionalParameter values should be rejected
- empty additionalParameters should be filtered out and ignored
- This parameter can be ommited.
- Please add tests demonstrating the following behaviours in MailRepositoriesRoutesTest
Of course, as always, we are willing to provide help for these issues. Please don't hesitate to reach us on https://gitter.im/apache/james-project .
Attachments
Issue Links
- links to