Details

    • Sub-task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 3.6.0
    • JMAP
    • None

    Description

        1. What

      Allow a completedescription of the mime structure of this message

        1. The spec
      • bodyStructure: EmailBodyPart (immutable) This is the full MIME structure of the message body, without recursing into message/rfc822 or message/global parts. Note that EmailBodyParts may have subParts if they are of type multipart/*.

      And ...

      
      An EmailBodyPart object has the following properties:
      
      -   partId: String|null Identifies this part uniquely within the Email. This is scoped to the emailId and has no meaning outside of the JMAP Email object representation. This is null if, and only if, the part is of type multipart/*.
      -   blobId: Id|null The id representing the raw octets of the contents of the part, after decoding any known Content-Transfer-Encoding (as defined in [@!RFC2045]), or null if, and only if, the part is of type multipart/*. Note that two parts may be transfer-encoded differently but have the same blob id if their decoded octets are identical and the server is using a secure hash of the data for the blob id. If the transfer encoding is unknown, it is treated as though it had no transfer encoding.
      -   size: UnsignedInt The size, in octets, of the raw data after content transfer decoding (as referenced by the blobId, i.e., the number of octets in the file the user would download).
      -   headers: EmailHeader[] This is a list of all header fields in the part, in the order they appear in the message. The values are in Raw form.
      -   name: String|null This is the decoded filename parameter of the Content-Disposition header field per [@!RFC2231], or (for compatibility with existing systems) if not present, then it’s the decoded name parameter of the Content-Type header field per [@!RFC2047].
      -   type: String The value of the Content-Type header field of the part, if present; otherwise, the implicit type as per the MIME standard (text/plain or message/rfc822 if inside a multipart/digest). CFWS is removed and any parameters are stripped.
      -   charset: String|null The value of the charset parameter of the Content-Type header field, if present, or null if the header field is present but not of type text/*. If there is no Content-Type header field, or it exists and is of type text/* but has no charset parameter, this is the implicit charset as per the MIME standard: us-ascii.
      -   disposition: String|null The value of the Content-Disposition header field of the part, if present; otherwise, it’s null. CFWS is removed and any parameters are stripped.
      -   cid: String|null The value of the Content-Id header field of the part, if present; otherwise it’s null. CFWS and surrounding angle brackets (<>) are removed. This may be used to reference the content from within a text/html body part HTML using the cid: protocol, as defined in [@!RFC2392].
      -   language: String[]|null The list of language tags, as defined in [@!RFC3282], in the Content-Language header field of the part, if present.
      -   location: String|null The URI, as defined in [@!RFC2557], in the Content-Location header field of the part, if present.
      -   subParts: EmailBodyPart[]|null If the type is multipart/*, this contains the body parts of each child.
      
      
        1. DOD

      As a client, I am able to fetch the `bodyStructure` properties of Email

        1. Example

      Given the following message:

       - partId1 multipart/mixed
              - partId2 multipart/altenative
                   - partId3 text/plain `First part`
                   - partId4 text/html 'First <b>part</b>`
              - partId5 text/plain `Second part`
              - partId6 text/html `<b>Third</b> part`
      

      Executing the following request:

      {
        "using": [
          "urn:ietf:params:jmap:core",
          "urn:ietf:params:jmap:mail"],
        "methodCalls": [[
          "Email/get",
          {
            "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
            "ids": ["3647"],
            "properties": ["bodyStructure"]
          },
          "c1"]]
      }
      

      Will return

      {
        "sessionState": "75128aab4b1b",
        "methodResponses": [[
          "Email/get",
          {
            "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
            "state": "000001",
            "list": [
              {
                "id": "3647",
                "bodyStructure":  {
                         "partId": "partId1",
                          "type": "multipart/mixed",
                          "blobId": "3647",
                           // ....
                           "subParts": [
                                 {
                                      "partId": "partId2",
                                       "type": "multipart/altenative",
                                       //...
                                       "subParts": [
                                           {
                                               "partId": "partId3",
                                                "type": "text/plain",
                                                 //...
                                            },
                                            {
                                                "partId": "partId4",
                                                "type": "text/html",
                                                //...
                                            }
                                       ]
                                },
                                 {
                                      "partId": "partId5",
                                       "type": "text/plain",
                                       //...
                                },
                                 {
                                      "partId": "partId6",
                                       "type": "text/html",
                                       //...
                                },
                            ],
                      }
              }
            ],
            "notFound": []
          },
          "c1"]]
      }
      

      Attachments

        Activity

          People

            aduprat Antoine Duprat
            btellier Benoit Tellier
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: