Uploaded image for project: 'James Server'
  1. James Server
  2. JAMES-2321

WebAdmin should allow to see more details about Mails

    XMLWordPrintableJSON

Details

    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

          Activity

            People

              Unassigned Unassigned
              btellier Benoit Tellier
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: