The MCMT Format

March 26, 2020

Modules and subsystems wanting to obtain and process the optional parts of an MCMT message must use the message resources API which is under the ec_message_rsrc namespace. (See “MCMT message flow” for a simplified control flow of MCMT.)

A MCMT message is a MIME message laid out as follows:

Content-Type: multipart/vnd.msys.mcmt; boundary=MCMT_BOUNDARY

--MCMT_BOUNDARY
Content-Type: message/rfc822

From: [email protected]
Subject: this is the email
Content-Type: text/plain

Notice how the complete email message is the *body* of the
message/rfc822 portion of this MIME payload

--MCMT_BOUNDARY
Content-Type: message/vnd.msys.smpp

This is the message that will be sent out over SMPP.

--MCMT_BOUNDARY
Content-Type: message/vnd.msys.mm7

<This is the MM7 payload>

--MCMT_BOUNDARY--

In the context of Mobile Momentum, MCMT is a multi-part MIME format with the following capabilities:

  • It enables content authors to create messages containing separate sections for email, SMS, and MM7 recipients.

  • It is extensible to other formats.

  • It is injectable via email

An example of the injection format for Mobile Momentum follows:

From: Someone <[email protected]>
To: 12345678790 <[email protected]>
Date: Fri, 01 Oct 2010 09:41:09 -0800 (PST)
Subject: Sample MCMT message
MIME-Version: 1.0
Content-Type: multipart/vnd.msys.mcmt; boundary=boundaryMCMT

--boundaryMCMT
Content-Type: message/rfc822

(email part is here)
--boundaryMCMT
Content-Type: multipart/vnd.msys.mm7;

Content-Type: multipart/related; boundary=boundaryMM7; type="text/xml"; »
  start="<soap_envelope>"
X-Transaction-Id: soap_transaction_id_used_for_logging_purpose_only
--boundaryMM7
Content-Type: text/xml
Content-ID: <soap_envelope>

(mm7 soap envelope is here)

--boundaryMM7
Content-Type: multipart/related
Content-ID: <soap_attachment>

(mm7 mime payload is here)

--boundaryMM7--

--boundaryMCMT
Content-Type: message/vnd.msys.smpp

short message text body

--boundaryMCMT--

Content Sections

The content section definitions follow. Each definition describes the Content-Type header, section/type dependent headers, and body/payload parts.

  • Email Part – the remainder of the email part contains the email rendering of the MCMT message. The Content-Type header is: Content-Type: message/rfc822

  • SMS Part – SMS Part The body of SMS section of the MCMT is the short message. The Content-Type header is: Content-Type: message/vnd.msys.smpp; charset=utf-8

  • MM7 Part – The body of the MM7 section. The Content-Type header is: Content-Type: multipart/vnd.msys.mm7

    The MIME part in the MM7 section can be either a valid HTTP payload for MM7 (i.e. a SOAP envelope as the first part and a MIME attachment as the second part), or a valid MIME part without a SOAP envelope.

When the MCMT MM7 section encloses a SOAP envelope, the "Content-Type" header must have the parameter ‘type="text/xml"’ to indicate the presence of the SOAP envelope, along with the "start" and "boundary" parameters. The header "X-Transaction-ID" must also be defined and consistent with the transaction-id in the SOAP envelope, though it is only used for logging purpose. For example:

Content-Type: message/vnd.msys.mm7;

Content-Type: multipart/related; type="text/xml"; start="<main_envelope>"; boundary="XXXX-MM7-boundary"; charset=utf-8
X-Transaction-Id: test_transaction_id

--XXXX-MM7-boundary
Content-Type: text/xml
Content-Disposition: inline
Content-ID: &lt;main_envelope>

&lt;?xml version="1.0" encoding="UTF-8"?>
<env:Envelope
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Header>
    <mm7:TransactionID xmlns:mm7="http://www.3gpp.org/ftp/Specs/archive/23_series/»
    23.140/schema/REL-5-MM7-1-0" env:mustUnderstand="1">test_transaction_id</»
    mm7:TransactionID>
  </env:Header>

  <env:Body>
    <SubmitReq xmlns="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/»
    REL-6-MM7-1-4">
        <MM7Version>6.8.0</MM7Version>
        <SenderIdentification>
          <VASPID>MessageSystems-VASPID</VASPID>
          <VASID>MessageSystems-VASID</VASID>
        </SenderIdentification>
        <Recipients>
          <To>
            <Number>4108470189</Number>
            <RFC2822Address displayOnly="true">[email protected]</»
            RFC2822Address>
          </To>
        </Recipients>
        <Subject>MCMT</Subject>
        <Content href="cid:mm7_test_mime_content_id-1" allowAdaptations="true"/>
            </SubmitReq>
  </env:Body>
</env:Envelope>

--XXXX-MM7-boundary
Content-Id: <mm7_test_mime_content_id-1>
Content-Type: multipart/mixed;
        boundary="XXXX-MM7-attachment-boundary"

This is a multipart message in MIME format.

--XXXX-MM7-attachment-boundary
Content-Type: text/plain

this is the body text

--XXXX-MM7-attachment-boundary
Content-Type: text/plain;
Content-Disposition: attachment;
        filename="test.txt"

this is the attachment text

--XXXX-MM7-attachment-boundary--

--XXXX-MM7-boundary--

The SOAP envelope in the MCMT MM7 section is optional. Momentum does not yet support the SOAP envelope shown in “With a SOAP Envelope”. The following example shows a MCMT MM7 part without a SOAP envelope:

Content-Type: message/vnd.msys.mm7

Content-Id: <mm7_test_mime_content_id-1>
Content-Type: multipart/mixed;
        boundary="XXXX-MM7-attachment-boundary"

This is a multipart message in MIME format.

--XXXX-MM7-attachment-boundary
Content-Type: text/plain

this is the body text

--XXXX-MM7-attachment-boundary
Content-Type: text/plain;
Content-Disposition: attachment;
        filename="test.txt"

this is the attachment text

--XXXX-MM7-attachment-boundary--