Submit to Multiple Destinations


SMPP protocol provides dedicated operation (submit_multi) defined as in [SMPP] (4.2.3) to submit the same message for up to 255 destinations in one operation.  Each destination can be either phone number (SME Address) or a Distribution List (DL) which has to be defined in SMSC's configuration.

The operation is not always supported by the SMSC but in case it is and the scenario fits it may provide great performance advantage over classic approach where each message has to be submitted to every destination separately.


To use Multiple Destination version of the submit function you have to provide list of destination addresses in the Destination parameter of the function.

Submit to multiple destinations is transparently supported by all submit functions of SMPP protocol in both synchronous and asynchronous mode. That is for example you can use it with all three functions smppSubmitMessage, smppSubmitMessageEx and smppSubmitMessageAsync in SMPP protocol.

Although the submit to Multiple Destinations is done as a single operation you must remember that there will be a series of Status Reports delivered for such a submit. SMSC will deliver a status report for every single destination that it has to serve as an effect of submit to Multiple Destinations.

Destination parameter syntax

The Destination parameter may contain up to 255 fields separated by semi-colon (";"). Each field may be either a properly qualified phone number (SME Address) or distribution list (DL) identifier. The syntax of the Destination field for Multiple Destinations is as follows:



destination Phone number (destination_addr) in format accepted by the SMSC. Usually this is regular international phone number like "48999123456" (without quotes). Field may contain up to 21 numerical characters.
ton Type Of Number (TON) for the preceding sme-address field. If the parameter is empty, e.g. by formatting the destination chunk like "48999123456::1" it will be replaced by the TON parameter of the appropriate submit function.
npi Numbering Plan Identifier (NPI) for the preceding sme-address field. If the parameter is empty, e.g. by formatting the destination chunk like "48999123456:1:" it will be replaced by the (NPI in this case) parameter of the appropriate submit function call.
@list Distribution List identifier (dl_name) considered without leading "@" sign. Distribution List is a set of numbers defined in the configuration of the SMSC. Field may contain up to 21 alpha-numerical characters not counting the leading "@" sign.


In the example below message is submitted to be delivered to three phone numbers: "48999123456", "48999123457" and "48999123458". All numbers will use TON and NPI provided as parameters for function call, the same way as with single Destination parameter:

string destination = "48999123456;48999123457;48999123458";

// [...]

result = clientSMPP.smppSubmitMessage(destination , 1, 1,
  "79123", 1, 1, "Hello World from SMSC Client Library!",
  EncodingEnum.et7BitText, "", options, messageID);

Another example shows message submitted to be delivered to phone number: "48999123456" and Distribution List "dl-test":

string destination = "48999123456;@dl-test";

// [...]

Force use of submit_multi with only one destination address. Phone number will have NPI set to 1, regardless what is passed as default NPI parameter in function call. TON parameter will be set to whatever was set for DNPI in the function call:

string destination = "48999123456::1;";

// [...]

For better clarity some details of code that submits message have been removed from the examples above.

See Also

smppSubmitMessage, smppSubmitMessageEx, smppSubmitMessageAsync