Sign in with your SMPP username and password.
| Submit Time | DLR Time | Message ID | From | To | Status | Err | Content / Text |
|---|---|---|---|---|---|---|---|
| No logs loaded. | |||||||
| Data Coding | Charset | Single SMS | Multipart (Per Part) | Usage |
|---|---|---|---|---|
data_coding = 0 |
GSM 7-bit (Standard Latin / English) | 160 chars | 153 chars | Standard Latin text |
data_coding = 8 |
UCS-2 / UTF-16BE (Unicode, Chinese, Arabic, Cyrillic, Emojis) | 70 chars | 67 chars | Required for non-Latin / Unicode content |
| Hex Code | Status | Description | Action Needed |
|---|---|---|---|
0x00000000 |
ESME_ROK | Message accepted successfully into gateway queue. | Store returned message_id to track DLR. |
0x0000000D |
ESME_RBINDFAIL | Authentication failed (wrong system_id or password). | Check your SMPP username & password. |
0x00000045 |
ESME_RSUBMITFAIL | Submit failed (Insufficient balance / quota exhausted or account disabled). | Top up balance in client portal. |
0x00000058 |
ESME_RTHROTTLED | TPS rate limit exceeded (Throttled). | Reduce sending speed to your configured TPS limit. |
0x00000014 |
ESME_RMSGQFUL | Queue buffer full. | Slow down submission rate briefly. |
0x00000004 |
ESME_RINVBSY | Gateway temporarily busy. | Retry message in 1-2 seconds. |
Enable registered_delivery = 1 in submit_sm to receive delivery receipts via deliver_sm.
| DLR Status | DLR Error Code | SMPP Error Constant | Actual Meaning & Root Cause |
|---|---|---|---|
DELIVRD |
err:000 |
ESME_ROK | Delivered. Handset confirmed delivery receipt successfully. |
UNDELIV |
err:255 |
ESME_RUNKNOWNERR | Carrier Delivery Failure / Network Error. Upstream carrier was unable to reach destination handset (phone turned off, out of coverage, or operator network failure). |
UNDELIV |
err:254 |
ESME_RDELIVERYFAILURE | Transaction Delivery Failure. Delivery attempt failed at the destination operator network. |
REJECTD |
err:069 / err:255 |
ESME_RSUBMITFAIL | Carrier Rejected. Blocked by mobile operator anti-spam firewall, keyword filter, or blacklisted recipient. |
EXPIRED |
err:098 |
ESME_RINVEXPIRY | Validity Expired. Destination handset was offline until message validity period expired on SMSC. |
UNDELIV |
err:810 / err:808 |
ESME_RROUTEFAIL | Route / Destination Barred. Destination prefix barred or network routing unavailable. |
UNKNOWN |
err:999 |
ESME_RUNKNOWNERR | Timeout. Upstream carrier did not return a definitive delivery receipt within timeout. |
import smpplib.client, smpplib.gsm, smpplib.consts
client = smpplib.client.Client('smpp.smsorca.com', 2775)
client.connect()
client.bind_transceiver(system_id='YOUR_USERNAME', password='YOUR_PASSWORD')
# For Unicode content, use data_coding=8
text = 'Hello from SmsOrca! Sample message'
parts, data_coding, esm_class = smpplib.gsm.make_parts(text)
for part in parts:
pdu = client.send_message(
source_addr_ton=smpplib.consts.SMPP_TON_ALPHANUMERIC,
source_addr_npi=smpplib.consts.SMPP_NPI_UNKNOWN,
source_addr='SmsOrca',
dest_addr_ton=smpplib.consts.SMPP_TON_INTERNATIONAL,
dest_addr_npi=smpplib.consts.SMPP_NPI_ISDN,
destination_addr='447123456789',
short_message=part,
data_coding=data_coding,
esm_class=esm_class,
registered_delivery=True,
)
print("Submitted msg_id:", pdu.message_id)
client.unbind()
client.disconnect()