SMPP api RRS feed

  • Question




    I was wondering if anyone can recommend a SMPP api, Im currently using devshock, but the support for that seems to have went about 2 years ago. I heard of IPWorks as well, does anyone have an opinion on it?


    Thank you.

    Thursday, March 13, 2008 8:11 PM

All replies

  • I have been playing with devshock for a while. It has not worked once. If you are successful with it, Please let me know.


    I am playing around EASY SMPP now. I hope it will work.


    Thursday, June 5, 2008 2:17 PM
  • Hi! I'm new in this topic, but began developing an SMPP application. Trying to use Easy SMPP. Can you explain me how to use this libraries, there is so much code in it.

    Tuesday, June 10, 2008 2:01 PM
  • I have been using the devshock component for over 3 years and it has always done what I need it to for me Smile

    Wednesday, July 9, 2008 10:58 AM
  • Hi Pyro3k,


    May be you are the guy who can help me with devshock. This product is out of support and there is no any manuals on it.

    I use SMPP-Server not Client. Do you have any experience with Server component ?


    Thanks in advance.


    Sunday, October 19, 2008 8:51 AM
  • Hi


    Any help would be appreciated, because I'm just about going insane here.


    I've written a program sending sms'es through a webservice of MTN (Cell phone service provider). It works well: you just send your username, password, recipient number and message as parameters, and get a return message.


    However, after we've written this, the client informed us that they've subscribed to a smpp connection. I have absolutely no idea what this is, and I can't seem to find a straight forward answer ANYWHERE. The code samples I've got so far are all HUGE (I can't believe that you need to build a space rocket just to send a simple sms), and non of them allow you to send a username and password.


    I don't have time to study 300 pages. I just need a simple straightforward C# example how to send data through an smpp connection.


    ANY help will be HUGELY appreciated.


    Tuesday, October 28, 2008 12:09 PM
  • Hanno


    Did you get anywhere with this. I am currently looking at EasySMPP (from SourceForge) and looking to integrate this with an ASP.NET application. The source code is pretty easy to follow and the example code in the tester app shows how the connection to SMPP should happen.


    However, I'm not so sure how a single threaded api will interact with a multi threaded web application sending multiple SMS at the one time, so I may well deposit all SMS requests in a table and wrap the EasySMPP libraries in a Windows service to drip feed to a SMPP provider.


    However, if you've already been through this pain and are willing to shed some light on what you've done, can you do so?





    Friday, January 23, 2009 4:19 PM
  • Hi All,

    I've been using this library from Inetlab (www.inetlab .ru/Products/ALT .SMS.Smpp Client.aspx)  The code is fairly straight forward, and the author provide some basic support.


    Thursday, June 18, 2009 8:44 AM
  • Hi guys ,

    I have to build a small sms gateway, with SMPP. Have someone examples/documentation for Easy SMPP?


    Monday, August 10, 2009 8:21 AM
  • Hi,

    I'm also using SMPP Devshock Library.
    Actually I developed a SMPP server. Everything works fine for me, except that I don't know how to explicitely disconnect a SMPP client.

    To test this SMPP server I've developed a SMPP client still using DevShock library.

    You can find below a very simple example to send a SMS with this library :

                SmppConnection _smpp = new SmppConnection();
                _smpp.OnDeliverSmReq += new SmppDeliverSmHandler(OnDeliverSmReq);

                _smpp.Settings.Timeout = 15000;
                _smpp.Settings.RemoteHost = "myserver.mydomain.com";
                _smpp.Settings.RemotePort = 10550; // Just an example
                _smpp.Settings.ConnectionMode = SmppConnectionMode.Transmitter;
                _smpp.Settings.BindParams.SystemId = "myLogin";
                _smpp.Settings.BindParams.Password = "myPwd";
                _smpp.Settings.BindParams.AddressRange = "";
                _smpp.Settings.BindParams.SystemType = "NET";
                _smpp.Settings.BindParams.InterfaceVersion = 52;

                SmppBindRes ResBind = _smpp.Bind();
                if (ResBind.Header.CommandStatus == 0)
                    Console.WriteLine(String.Format("Connection successful {0:X}", ResBind.Header.CommandId));
                    _smpp = null;
                    Console.WriteLine("Error while connecting " + ResBind.Header.CommandStatus);

    private void OnDeliverSmReq(object sender, SmppDeliverSmEventArgs e)
                SmppConnection s = (SmppConnection)sender;

                s.DeliverSmRes(new SmppDeliverSmRes(e.Pdu.Header.SequenceNumber, ""));

    As I said, really simple.

    But if someone could tell me how to disconnect (like sending an Unbind) a SMPP Client from the server, it would be great.

    Thursday, February 11, 2010 11:08 AM
  • Hi,

    Devshock doesn't seem to be supported anymore nor does it seem to allow for concatenated sms.

    Does any one have any idea of how to modify the EasySMPP libs to send concatenated SMS?

    I've been struggling with this for ages so any help would be appreciated.

    I presume I need to modify the SUBMIT_SM_PDU to include UDH info, but have no idea how to do this.

    Please help!!

    I'm creating my PDU's currently as follows:

    public int SubmitSM(byte sourceAddressTon, byte sourceAddressNpi, string sourceAddress,
                                    byte destinationAddressTon, byte destinationAddressNpi, string destinationAddress,
                                    byte esmClass, byte protocolId, byte priorityFlag, 
                                    DateTime sheduleDeliveryTime, DateTime validityPeriod, byte registeredDelivery, 
                                    byte replaceIfPresentFlag, byte dataCoding, byte smDefaultMsgId, 
                                    byte[] message)
                        byte[] _destination_addr;
                        byte[] _source_addr;
                        byte[] _SUBMIT_SM_PDU;
                        byte[] _shedule_delivery_time;
                        byte[] _validity_period;
                        int _sequence_number;
                        int pos;
                        byte _sm_length;
                        _SUBMIT_SM_PDU = new byte[KernelParameters.MaxPduSize];
                        /// Start filling PDU						
                        Tools.CopyIntToArray(0x00000004, _SUBMIT_SM_PDU, 4);
                        _sequence_number = smscArray.currentSMSC.SequenceNumber;
                        Tools.CopyIntToArray(_sequence_number, _SUBMIT_SM_PDU, 12);
                        pos = 16;
                        _SUBMIT_SM_PDU[pos] = 0x00; //service_type
                        pos += 1;
                        _SUBMIT_SM_PDU[pos] = sourceAddressTon;
                        pos += 1;
                        _SUBMIT_SM_PDU[pos] = sourceAddressNpi;
                        pos += 1;
                        _source_addr = Tools.ConvertStringToByteArray(Tools.GetString(sourceAddress, 20, ""));
                        Array.Copy(_source_addr, 0, _SUBMIT_SM_PDU, pos, _source_addr.Length);
                        pos += _source_addr.Length;
                        _SUBMIT_SM_PDU[pos] = 0x00;
                        pos += 1;
                        _SUBMIT_SM_PDU[pos] = destinationAddressTon;
                        pos += 1;
                        _SUBMIT_SM_PDU[pos] = destinationAddressNpi;
                        pos += 1;
                        _destination_addr = Tools.ConvertStringToByteArray(Tools.GetString(destinationAddress, 20, ""));
                        Array.Copy(_destination_addr, 0, _SUBMIT_SM_PDU, pos, _destination_addr.Length);
                        pos += _destination_addr.Length;
                        _SUBMIT_SM_PDU[pos] = 0x00;
                        pos += 1;
                        _SUBMIT_SM_PDU[pos] = esmClass;
                        pos += 1;
                        _SUBMIT_SM_PDU[pos] = protocolId;
                        pos += 1;
                        _SUBMIT_SM_PDU[pos] = priorityFlag;
                        pos += 1;
                        _shedule_delivery_time = Tools.ConvertStringToByteArray(Tools.GetDateString(sheduleDeliveryTime));
                        Array.Copy(_shedule_delivery_time, 0, _SUBMIT_SM_PDU, pos, _shedule_delivery_time.Length);
                        pos += _shedule_delivery_time.Length;
                        _SUBMIT_SM_PDU[pos] = 0x00;
                        pos += 1;
                        _validity_period = Tools.ConvertStringToByteArray(Tools.GetDateString(validityPeriod));
                        Array.Copy(_validity_period, 0, _SUBMIT_SM_PDU, pos, _validity_period.Length);
                        pos += _validity_period.Length;
                        _SUBMIT_SM_PDU[pos] = 0x00;
                        pos += 1;
                        _SUBMIT_SM_PDU[pos] = registeredDelivery;
                        pos += 1;
                        _SUBMIT_SM_PDU[pos] = replaceIfPresentFlag;
                        pos += 1;
                        _SUBMIT_SM_PDU[pos] = dataCoding;
                        pos += 1;
                        _SUBMIT_SM_PDU[pos] = smDefaultMsgId;
                        pos += 1;
                        _sm_length = message.Length > 254 ? (byte)254 : (byte)message.Length;
                        _SUBMIT_SM_PDU[pos] = _sm_length;
                        pos += 1;
                        Array.Copy(message, 0, _SUBMIT_SM_PDU, pos, _sm_length);
                        pos += _sm_length;
                        Tools.CopyIntToArray(pos, _SUBMIT_SM_PDU, 0);
                        Send(_SUBMIT_SM_PDU, pos);
                        return _sequence_number;
                    catch (Exception ex)
                        logMessage(LogLevels.LogExceptions, "SubmitSM | " + ex.ToString());
                    return -1;

    Thursday, March 11, 2010 12:08 PM
  • Hi, We're struggling with an identical problem in Devshock. The lack of documentation is extremely frustrating. We're trying to send vCards. Did you have any luck with setting the UDH? Could you share it here?
    Tuesday, April 13, 2010 4:57 PM
  • Hi. I am looking to download devshock smpp server but the site is closed so i came across this blog. Would you mind forwarding it to me? I would appreciate that very much.

    My email is albertzakhia@hotmail.com

    Thank you.

    Wednesday, May 26, 2010 12:48 PM
  • Hi Drewgy,

    I am having an exact same problem as you were. As your question is dated back to Thursday, March 11, 2010 12:08 PM i assume and hope you must have got the solution to this issue by now. Can you please share your findings with us because i am really stuck here and i have 20 more days to submit the project. Please please help me.



    Friday, November 12, 2010 7:02 AM
  • Hi... I currently working with the Devshock also...

    I working on the a Client version, but in my client I'm thinking on connecting to multiple SMSC... from the same client.  any suggestion and how this could be done.






    Wednesday, January 5, 2011 8:37 PM
  • Hi vbond,

    Hi all other profis.. :-)

    I'm using Devshock dll  I all seems to work how expected. With an exepction: I'm going to use the TLV while sending a message over smpp.

    And the big problem is: how shall I do that?: here the cut of my code....:

    SmppConnection mySmppClient = new SmppConnection();
    mySmppClient.OnDeliverSmReq += new SmppDeliverSmHandler(OnDeliverSmReq); 
    private void button1_Click(object sender, EventArgs e) 
    string MessageId = "" ; 
    SmppSubmitSmReq.BodyPdu ReqSubmit_Sm = new SmppSubmitSmReq.BodyPdu (); 
    SmppSubmitSmRes ResSubmit_Sm = new SmppSubmitSmRe(); 
    SmppQuerySmReq ReqQuerySm = new SmppQuerySmReq(); 
    SmppQuerySmRes ResQuerySm = new SmppQuerySmRes(); 
    SmppSubmitSmReq reqsbmmsg = new SmppSubmitSmReq(); // this is a test initial to try to add a TLV to the message... 
    reqsbmmsg.Tlv.Items.Add(SmppTlv.TagString.ItsSessionInfo); // This seems to be wrong as I don't have a posibility to add a value 
    // to the ItsSessionInfo ( 0x1383) 
    // reqsbmmsg.Tlv.AddTlv( /// no chance... what do do here???? or how ? 
    ReqSubmit_Sm.DestinationAddress = textBox10.Text;
    ReqSubmit_Sm.DestinationAddressTon =
    ReqSubmit_Sm.DestinationAddressNpi =
    ReqSubmit_Sm.ServiceType = comboBox6.Text;
    ReqSubmit_Sm.SourceAddress = textBox9.Text;
    ReqSubmit_Sm.SourceAddressTon =
    ReqSubmit_Sm.SourceAddressNpi =
    ReqSubmit_Sm.EsmClass.Value =
    ReqSubmit_Sm.RegisteredDelivery.Value =
    ResSubmit_Sm = mySmppClient.SubmitSm(
    new SmppSubmitSmReq 
    (ResSubmit_Sm.Header.CommandStatus == 0) 
    dataGridView1.Rows[0].Cells[0].Value =
    dataGridView1.Rows[0].Cells[1].Value = ReqSubmit_Sm.SourceAddress;
    dataGridView1.Rows[0].Cells[2].Value = ReqSubmit_Sm.DestinationAddress;
    dataGridView1.Rows[0].Cells[3].Value = ResSubmit_Sm.Body.MessageId;
    dataGridView1.Rows[0].Cells[4].Value = ReqSubmit_Sm.ServiceType.ToString();
    dataGridView1.Rows[0].Cells[5].Value =
    ReqQuerySm.Body.MessageId = MessageId;
    ReqQuerySm.Body.SourceAddress = ReqSubmit_Sm.SourceAddress;
    ReqQuerySm.Body.SourceAddressNpi = ReqSubmit_Sm.SourceAddressNpi;
    ReqQuerySm.Body.SourceAddressTon = ReqSubmit_Sm.SourceAddressTon;
    MessageBox.Show("Can't sent the message, error: " + Environment.NewLine + SmppStatusCodes 





    Friday, April 15, 2011 1:22 PM
  • Hi wilsavery,

    Could you or somebody help me concerning the TLV issue described above ( It's a reply to vbond)?




    Friday, April 15, 2011 1:27 PM
  • May be worth considering (commercial component):

    SMSC client .NET

    Has quite few source code examples (C#, VB .NET, also SMPP client as Windows Service in C# and Visual Basic .NET) support and documentation. Does multi-part (concatenated) messages. Performs advanced SMPP operations and is both 32 and 64 bit .NET managed assembly. It can also be used through COM interface (like ActiveX or OCX with source code examples for Visual Basic 6) which can be used from many programming languages, PHP including. It also supports other messaging protocols (UCP, CIMD2 and SEMA) popular elsewhere in the world.

    Monday, May 9, 2011 9:23 AM
  • Hi all,

    It's about Devshock...:

    Fpr all those who have to send TLVs using Devshock. I found the solution ( for my problem descriebed above).  All what you have to do is to add following part of code to your App.:

    // first create the new TLV ( I didn't use exiating TLVs . smpp 3.4, I created my own TLV which is configured by smpp Server who needs this TLV)
    SmppTlv.Tag mytlv = new SmppTlv.Tag 
    (0x2646); // the name of this TLV and the Tag (0x2646)
    //then create encoding variable which you can use later for add some value to this TLV:
    System.Text.ASCIIEncoding menc = new System.Text.ASCIIEncoding(); // C# encoding...
    // and store the bytes using the encoding variable in the byte array:
    byte[] mv = menc.GetBytes("12345"); // set value... 
    // add your new created and with a value initialized TLV to your submit request:

    that's all

    nice day... :-) 


    Tuesday, July 5, 2011 8:21 AM
  • I have mostly used in a Client to SMSC environment but if you send me specific questions I can try.
    Tuesday, October 11, 2011 4:43 AM
  • Hello, I am trying to develop my own smpp application but i was wondering of how I could receive messages ? and how can I check the link enquiry state, if you could possible help me please let me know .

    Thanks !

    Wednesday, March 7, 2012 10:42 PM
  • Hi,

    Can you tell me that if i want to send more than 15,000+ SMS in a day and each SMS contains more than 2000+ characters, so devshock can support me or not? or recommend me any SMPP library so that i can use it in my .Net project

    Saturday, September 28, 2013 3:51 PM
  • i'm stuck on my smpp project. i'm new for smpp protocal. so, could you mail me your  simple smpp project @ krishna977@hotmail.com. it will be appretiable. thanks
    Wednesday, June 4, 2014 8:10 AM
  • can you send me your project file to me krishna977@hotmail.com
    Wednesday, June 4, 2014 9:54 AM