Single and Multipart Messages
SMS messages are limited to a certain data size (or byte size), which means that there is a limit on the number of characters you can send in each SMS message. However to work around this restriction, mobile operators and handsets are able to combine multiple messages to form a single message experience for your end users.
Messages that are divided into parts are referred to by several industry terms, including long, concatenated, and multipart. Character encoding also impacts message length.
When using either the Global SMS API or MEP, you are given the choice to limit messages to only single part, or allow multipart messages.
Single part messages
A message that requires only one SMS is referred to as a single part SMS message. The maximum size of this may differ slightly with mobile operators in different regions. In the UK and the US, a single SMS message can be up to 160 characters (when using the GSM character set) or 70 characters (when using the UCS-2 character set).
Multipart messages use more than one SMS to send the message. For example, if you are sending a GSM message of 500 characters to an end user in the UK, the message is split into 4 separate parts and reconstructed as a long message on the mobile handset.
To enable multipart messages, we add a User Data Header (UDH) to each message part. This means the maximum bytes per part is slightly smaller than for a single part SMS. For example, with UK or US operators, this makes each part respectively 153 (GSM 7-bit) or 67 (UCS-2) characters.
Support for multipart messages is dependent on the region and operator. Most mobile operators support multipart messages of at least four parts, but not much more than this. However, some US operators support up to 20 parts. Once OpenMarket has accepted a message request, we will check whether the operator accepts the message length. If a request is more than the maximum number of parts the operator accepts, we reject it.
Important: MEP has an imposed maximum limit of ten parts. The Global SMS API has a limit of 2680 bytes, which allows for much higher multipart messages (dependent on the character set used). However, this is far greater than most (but not all) operators accept.
Because operators around the world use varying message lengths and support different character encodings, we cannot provide a precise byte or character size limit to follow. Instead, if you are planning to send quite long messages, consider breaking the message into multiple requests, and make sure that you test these messages in the relevant regions. You can also talk to your OpenMarket account manager about the size restrictions that apply in the regions to which you are sending messages.
When sending a multipart message, you will be charged for each message segment, not the message as a whole. Therefore, if your message is split into four segments you will be charged for each of those four segments.
MEP and MEP broadcasts
OpenMarket MEP supports multipart messages that are made up of a maximum of ten separate SMS messages, which in total can be up to 1530 characters (GSM) or 670 characters (UCS-2). This is respectively 153 or 67 characters per part. This is lower than for a single part message, as each part needs to use a little bit of data to let the handset know it is part of a multipart message.
When sending a broadcast, the UI will provide a warning when your message will take more than one SMS part. There is a counter underneath the message field to help you as well. However, if your message contains EL expressions, then MEP will not know the message length until it has processed the message (which occurs just before the message is sent). Because you are generally charged per part, the Create Broadcast page will ask you to confirm whether or not you want the message sent as multipart if it exceeds the length of a single part SMS.
If you are using a UK premium SMS account, then any multipart messages are rejected as they are processed. This ensures that the end user is not billed multiple times.
Global SMS API
The mlc option identifies what you would like to happen if your message is longer than the maximum single part message that the mobile operator supports. The options are:
- Reject the message — OpenMarket does not send the message on to the end user.
- Truncate the message —This means the end user will get a single part message that finishes at the maximum length that the mobile operator supports.
- Segment the message —This means that OpenMarket sends a multipart message. Note that if your message is larger than the maximum multipart message allowed by the mobile operator, we will reject the message.
Note: When you submit an SMS message request, our synchronous reply informs you whether the request was accepted. However, it does not identify whether the message needs multiple parts. This is because we need to check the message's character use against the mobile operator's constraints before we can process the message.
Imagine sending a Shakespearean sonnet to a UK operator that is 622 GSM characters in length. The table below shows what the end user would receive based on the mlc value.
Your submit request would be rejected.
OpenMarket truncates the message to a single part of 160 characters:
Shall I compare thee to a summer's day? Thou art more lovely and more temperate: Rough winds do shake the darling buds of May, And summer's lease hath all too s
OpenMarket segments the message into 5 parts, with 4 of approximately 153 characters and another of 10 characters. Most handsets will then display it as one long message.
Shall I compare thee to a summer's day? Thou art more lovely and more temperate: Rough winds do shake the darling buds of May, And summer's lease hath al
l too short a date: Sometime too hot the eye of heaven shines, And often is his gold complexion dimm'd; And every fair from fair sometime declines, By c
hance, or nature's changing course, untrimm'd; But thy eternal summer shall not fade Nor lose possession of that fair thou ow'st; Nor shall Death brag th
ou wander'st in his shade, When in eternal lines to time thou grow'st; So long as men can breathe or eyes can see, So long lives this, and this gives lif
e to thee.
You will receive delivery receipts for each part of the message. Each part is identified by the attribute segmentNumber. All the parts share the same ticketId.
There are a few mobile operators that do not support multipart messaging at all. OpenMarket applies the same logic above for the mlc reject and truncate options. However, if you set mlc to segment, then OpenMarket will send the message as a series of single part messages. We do not add any UDH. Instead, we add a page numbering sequence to the start of each message to help the end user. This gives both the part number (p) and the total number of parts (t) in the format: "p/t:"; E.g.:
- 1/5: Shall I compare thee...
- 2/5: l too short a date...
- 3/5: hance, or nature's...