RelatedSMPP Load Balancer
SMPP Load Test tool
SMPP SMS Gateway platform
Tyr SMS Gateway
SMS Code Bench
python-smpplib library can be used to make SMPP requests using Python. This library can be used to submit SMS to an SMS gateway or SMSC.
SMPP requirements and resources
SMPP is the Short Message Peer-to-Peer protocol and is used by applications for sending and receiving SMS. An SMPP client can be used to connect to an SMSC or SMS gateway using the SMPP protocol. An SMPP account, including special Developer accounts, can quickly and easily be obtained for using the Melrose Labs Tyr SMS Gateway or SMSC Simulator. The following are required to send SMS with SMPP:
- SMPP Protocol [reference]
Short Message Peer-to-Peer Protocol v3.3, v3.4 and v5 specifications and guides
- SMPP Client [tool]
Browser-based SMPP client supporting SMPP v3.x and v5 via Web Sockets
Python requirements and resources
Python is a programming language and can be used to quickly and easily add SMS support for programmatically sending and receiving SMS messages. Use it for transactional messaging and notifications between your application and mobiles. The following are required to send SMS using Python:
Python programming language
Requirements and resources
The following are required to send SMS with SMPP using Python:
Python SMPPlib: SMPP library for Python 3.
pip3 install smpplib
The code connects to the server, then establishes an SMPP transceiver bind by sending a
bind_transceiver SMPP PDU. It receives a
bind_transceiver - resp with a positive "Ok" acknowledgement.
submit_sm PDU is then sent by the code to send the message. The message ID for the submission is returned in the
submit_sm - resp.
When the message is delivered, the delivery receipt is returned in the
deliver_sm PDU and acknowledged by the code with a
deliver_sm - resp.
The session is then closed by the code sending an
unbind PDU, which is acknowledged with a
unbind - resp. The TCP session is then closed.
Create the file
sendsms.py containing the code below. Replace the hostname
PASSWORD values with those from your SMPP API account. Alternatively, replace
PASSWORD with those allocated to you for use with the Melrose Labs SMSC Simulator or the smpp.org SMSC simulator.
The following example Python code opens an SMPP transceiver bind to
smscsim.melroselabs.com on port
2775 (SMPP port), and then sends the message
Hello World #$£ to mobile number
MelroseLabs. After a successful submission, the message ID is returned in
pdu.message_id. A number of seconds later, a delivery receipt is received when the message is delivered. The SMPP system ID and password for the SMPP account are contained in
(ve)$ python sendsms.py INFO:smpp.Client.4495364560:Connecting to smscsim.melroselabs.com:2775... DEBUG:smpp.Client.4495364560:Receiver mode DEBUG:smpp.Client.4495364560:Sending bind_transceiver PDU DEBUG:smpp.Client.4495364560:>>b'000000250000000900000000000000013731323736320050415353574f5244000034000000' (37 bytes) DEBUG:smpp.Client.4495364560:Waiting for PDU... DEBUG:smpp.Client.4495364560:<<b'000000208000000900000000000000014d656c726f73654c616273534d534300' (32 bytes) DEBUG:smpp.Client.4495364560:Read bind_transceiver_resp PDU DEBUG:smpp.Client.4495364560:Sending submit_sm PDU DEBUG:smpp.Client.4495364560:>>b'000000480000000400000000000000020005004d656c726f73654c616273000101343437373132333435363738000000000000010000001048656c6c6f20576f726c64201b650201' (72 bytes) 2 DEBUG:smpp.Client.4495364560:Waiting for PDU... DEBUG:smpp.Client.4495364560:<<b'000000518000000400000000000000023039353732613061303962633733663265393065393338626336656138636132646366306364343562343039383165343632396638343035353534376561333100' (81 bytes) DEBUG:smpp.Client.4495364560:Read submit_sm_resp PDU sent 2 b'09572a0a09bc73f2e90e938bc6ea8ca2dcf0cd45b40981e4629f84055547ea31' DEBUG:smpp.Client.4495364560:Waiting for PDU... DEBUG:smpp.Client.4495364560:<<b'000001260000000500000000000000010001013434373731323334353637380005004d656c726f73654c616273000400000000000000009d69643a30393537326130613039626337336632653930653933386263366561386361326463663063643435623430393831653436323966383430353535343765613331207375623a30303020646c7672643a303031207375626d697420646174653a3230303231383132313020646f6e6520646174653a3230303231383132313020737461743a44454c49565244206572723a30303020746578743a00042700010204230003030000001e00413039353732613061303962633733663265393065393338626336656138636132646366306364343562343039383165343632396638343035353534376561333100' (294 bytes) DEBUG:smpp.Client.4495364560:Read deliver_sm PDU delivered b'09572a0a09bc73f2e90e938bc6ea8ca2dcf0cd45b40981e4629f84055547ea31' DEBUG:smpp.Client.4495364560:Sending deliver_sm_resp PDU DEBUG:smpp.Client.4495364560:>>b'0000001180000005000000000000000100' (17 bytes) DEBUG:smpp.Client.4495364560:Waiting for PDU...
The above shows a connection being made to
smscsim.melroselabs.com on port
2775 and an SMPP transceiver bind (
client.bind_transceiver()) being established.
Once this has been done, a message is submitted to the SMSC/SMS gateway using
submit_sm PDU), and a response (
submit_sm_resp PDU) is received from the SMSC/SMS gateway with the message ID for the submitted message.
Shortly afterwards, the message is delivered and a delivery receipt contained in a
deliver_sm PDU is received, to which our code responds with an acknowledgement (
Using in production
Whatever the language or API, you can send SMS and receive SMS between applications and mobiles for a wide range of uses with any of the trusted and reliable CPaaS services from Melrose Labs. Take a look at our Messaging, SMS gateway and Bulk SMS solutions, and sign-up for a Developer account on our Tyr SMS Gateway service to try us out.
We provide a wide range of CPaaS services and infrastructure to organisations, including cloud platforms that enable you to run your own SMS gateway.
Get in contact with us to find out more about CPaaS voice, messaging, video and identity from Melrose Labs.
For testing your application's SMS support when using the SMPP protocol, we recommend starting with the Melrose Labs SMSC Simulator service to simulate SMS message delivery to mobiles (MT SMS) and simulate SMS messages from mobiles (MO SMS). The SMSC Simulator supports SMPP v3.3, v3.4 and v5.SMSC Simulator
For live testing and delivery to mobiles, use the reliable and dependable Melrose Labs Tyr SMS Gateway for A2P, P2A, bulk, wholesale and business SMS, text marketing and other uses. The Melrose Labs Tyr SMS Gateway supports REST and SMPP APIs.Tyr SMS Gateway
Alternative APIs and languages
Other APIs covered in our tutorials that can be used for sending and receiving SMS using Python include: REST