This should probably be in a FAQ somewhere, so I share it here …
The default SMPP error code handling behaviour for NowSMS with an SMPP connection is as follows:
For most SMPP error codes, NowSMS will assume that the error is temporary, and retry message delivery with a delayed retry schedule.
The exceptions to this are detailed below: The following error conditions cause NowSMS to record a message delivery failure and NOT retry sending:
ESME_RINVDSTADDR (0x0B, invalid destination/recipient address)
ESME_RINVSRCADDR (0x0A, invalid source/sender address)
ESME_RX_R_APPN (0×66, receiver reject message)
The following error codes cause NowSMS to retry more times than the RetryMaxAttempts setting (default=20) allows:
ESME_RTHROTTLED (0×58, throttle error, slow down)
ESME_RMSGQFUL (0×14, message queue full)
For all other errors, NowSMS will retry sending the message up to RetryMaxAttempts times (default=20).
However, if you have particular error codes from your SMS provider that you need to treat as failure, you can add them to the SMPPRejectErrorCodes setting. For example, some SMPP providers have defined their own extended error codes that you need to configure NowSMS to treat as a failure without performing any retries.
For example, to treat the 0xFE error as a permanent error, you would edit SMSGW.INI, and under the [SMSGW] header, add:
(Note that you must specify the error code value in hexadecimal.)
For error codes other than those listed above (or that are configured under the SMPPRejectErrorCodes setting in SMSGW.INI), NowSMS applies a delayed retry schedule.
The default behaviour for the delayed retry schedule works like this:
After the first error, a retry can be attempted immediately (but first NowSMS will try other pending messages in the outbound queue).
After the second error, NowSMS will wait 30 seconds before allowing the message to be retried. After the third error, NowSMS will wait 60 seconds before allowing the message to be retried. For each successive error, NowSMS waits an additional 30 seconds before allowing a retry. After 20 errors, the message will be considered as failed.
The following parameters can be applied to the [SMSGW] section of the SMSGW.INI file to provide additional control for the retry schedule:
The above parameters control retry behaviour for when NowSMS is submitting messages to an SMSC and an error occurs.
RetryDelay=#### specifies a number of seconds to wait to retry sending after an error condition, the default value is 30.
RetryDelayMultiplier=### specifies a multiplier to be applied for successive send failures, the default value is 1. For each failed attempt, the retry delay will be the product of RetryDelay*RetryDelayMultiplier*#FailedAttempts. To use a fixed retry delay of RetryDelay, specify RetryDelayMultiplier=0.
RetryDelayAfterAttempts=### specifies that the retry delay should only be applied after ### failed attempts, the default value is 2. NowSMS will immediately retry a failed message send until it has made RetryDelayAfterAttempts, after which it will apply a retry delay.
RetryDelayMax=### specifies the maximum number of seconds that NowSMS will allow to elapse between retries, putting a limit on the multiplier.
RetryMaxAttempts=### specifies the maximum number of retries that NowSMS will attempt before a message is rejected, the default value is 20.
For comments and further discussion, please click here to visit the NowSMS Technical Forums (Discussion Board)...