[
https://issues.apache.org/jira/browse/JAMES-3369?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17193528#comment-17193528
]
René Cordier commented on JAMES-3369:
-
[https://github.com/linagora/james-project/pull/3761] contributed bodyValues
handling
> Email/get 14. bodyStructure property
>
>
> Key: JAMES-3369
> URL: https://issues.apache.org/jira/browse/JAMES-3369
> Project: James Server
> Issue Type: New Feature
> Components: JMAP
>Reporter: Benoit Tellier
>Assignee: Antoine Duprat
>Priority: Major
>
> ## What
> Allow a completedescription of the mime structure of this message
> ## 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 ...
> {code:java}
> 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.
> {code}
> ## DOD
> As a client, I am able to fetch the `bodyStructure` properties of Email
> ## Example
> Given the following message:
> {code:java}
> - partId1 multipart/mixed
> - partId2 multipart/altenative
> - partId3 text/plain `First part`
> - partId4 text/html 'First part`
> - partId5 text/plain `Second part`
> - partId6 text/html `Third part`
> {code}
> Executing the following request:
> {code:java}
> {
> "using": [
> "urn:ietf:params:jmap:core",
> "urn:ietf:params:jmap:mail"],
> "methodCalls": [[
> "Email/get",
> {
> "accountId":
> "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
> "ids": ["3647"],
> "properties": ["bodyStructure"]
> },
> "c1"]]
> }
> {code}
> Will return
> {code:java}
> {
> "sessionState": "75128aab4b1b",
> "methodResponses": [[
> "Email/get",
> {
> "accountId":
>