title: sending bulk sms to group using vb.net
body: <p>I connected recently to SMS provider API using vb.net</p>
  
  <p>I have created a group table and inserted all numbers in  this group and then reach each row and send trigger the API to process sending.
  The sms is not reached to all group members, its only delivered successfully to  the first mobile number in the group.</p>
  
  <p>How to solve this problem ? I think I have to set a delay between each sending and i did with no use. my code is below :</p>
  
  <pre><code>  Function GetGroupsMobileNumbers() As ArrayList
      Dim MobileNumbersArrayList As New ArrayList
  
  
      For Each Contact As FilsPayComponent.ContactAddress In FilsPayComponent.ContactAddress.GetAllContactAddressByGroupId(ddlGroup.SelectedValue)
          MobileNumbersArrayList.Add(Contact.Mobile)
      Next
  
  
  
      Return MobileNumbersArrayList
  End Function
  Protected Sub btnSend_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSend.Click
  
      If ddlGroup.SelectedValue = 0 Then
          lbResult.Text = "No groups selected"
          Exit Sub
      End If
  
      Dim MobileNumbersArrayList As ArrayList
      MobileNumbersArrayList = GetGroupsMobileNumbers()
  
      If MobileNumbersArrayList.Count = 0 Then
  
          lbResult.Text = "Group doesnt contain numbers"
  
  
          Exit Sub
      End If
  
      Dim TotalNo As Integer = FilsPayComponent.ContactAddress.AddressContactsCount(ddlGroup.SelectedValue)
      If MobileNumbersArrayList.Count * messagecount.Value &lt;= FilsPayComponent.SmSUser.GetSmSUserByUserId(Context.User.Identity.Name).Balance Then
  
  
  
          Dim txtMsg As String
          Dim smstype As Integer
  
          If hidUnicode.Value &lt;&gt; "1" Then
              txtMsg = txtMessage.Text
              smstype = 1
          Else
              txtMsg = ConvertTextToUnicode(txtMessage.Text)
  
              smstype = 2
          End If
          Dim x As Integer
          'For Each Contact As FilsPayComponent.ContactAddress In FilsPayComponent.ContactAddress.GetAllContactAddressByGroupId(ddlGroup.SelectedValue)
          For Each Contact In MobileNumbersArrayList.ToArray
  
              Dim toMobile As String = Contact.Mobile
  
              If toMobile.Length &gt; 10 Then
  
                  Dim ExecArrayList As ArrayList
                  ExecArrayList = SendSMS(toMobile, txtMsg, smstype)
  
                  '-- give the excution more time
                  If ExecArrayList.Count &lt; 1 Then
                      Threading.Thread.Sleep(1000)
                  End If
                  '-- give the excution more time
                  If ExecArrayList.Count &lt; 1 Then
                      Threading.Thread.Sleep(1000)
                  End If
                  '-- give the excution more time
                  If ExecArrayList.Count &lt; 1 Then
                      Threading.Thread.Sleep(1000)
                  End If
  
                  x = x + 1
  
  
  
                  '  lbresult.Text = "Sent Successfully"
              End If
  
          Next
  
          FilsPayComponent.SmSUser.RemoveSmsCredit(Context.User.Identity.Name, messagecount.Value * x)
  
          Dim NewsmsarchiveItem As New FilsPayComponent.smsarchive
          NewsmsarchiveItem.FromMobile = txtSenderID.Text
          NewsmsarchiveItem.ToMobile = "0"
          NewsmsarchiveItem.GroupId = ddlGroup.SelectedValue
          NewsmsarchiveItem.DateSent = DateTime.Now
          NewsmsarchiveItem.Msg = txtMessage.Text
          NewsmsarchiveItem.GroupCount = x
          NewsmsarchiveItem.Optional1 = Context.User.Identity.Name
          NewsmsarchiveItem.Optional2 = "1"
  
  
          NewsmsarchiveItem.MessageNo = messagecount.Value
  
          Try
              NewsmsarchiveItem.Addsmsarchive()
              lbResult.Text = "Message sent successfully"
              btnSend.Visible = False
  
          Catch ex As Exception
              lbResult.Text = ex.Message
          End Try
  
      Else
  
          lbResult.Text = "Not enough credit, please refill "
  
      End If
  End Sub
  
  Sub SendSMS(ByVal toMobile As String, ByVal txtMsg As String, ByVal smstype As Integer)
      Dim hwReq As HttpWebRequest
      Dim hwRes As HttpWebResponse
  
      Dim smsUser As String = "xxxxxx"
      Dim smsPassword As String = "xxxxxx"
      Dim smsSender As String = "xxxxxx"
  
  
  
  
      Dim strPostData As String = String.Format("username={0}&amp;password={1}&amp;destination={2}&amp;message={3}&amp;type={4}&amp;dlr=1&amp;source={5}", Server.UrlEncode(smsUser), Server.UrlEncode(smsPassword), Server.UrlEncode(toMobile), Server.UrlEncode(txtMsg), Server.UrlEncode(smstype), Server.UrlEncode(smsSender))
      Dim strResult As String = ""
      Try
  
          hwReq = DirectCast(WebRequest.Create("http://xxxxx:8080/bulksms/bulksms?"), HttpWebRequest)
  
          hwReq.Method = "POST"
          hwReq.ContentType = "application/x-www-form-urlencoded"
          hwReq.ContentLength = strPostData.Length
  
          Dim arrByteData As Byte() = ASCIIEncoding.ASCII.GetBytes(strPostData)
          hwReq.GetRequestStream().Write(arrByteData, 0, arrByteData.Length)
  
          hwRes = DirectCast(hwReq.GetResponse(), HttpWebResponse)
          If hwRes.StatusCode = HttpStatusCode.OK Then
              Dim srdrResponse As New StreamReader(hwRes.GetResponseStream(), Encoding.UTF8)
              Dim strResponse As String = srdrResponse.ReadToEnd().Trim()
              Select Case strResponse
                  Case "01"
                      strResult = "success"
  
                      Exit Select
                  Case Else
                      strResult = "Error: " + strResponse
                      Exit Select
  
  
              End Select
          End If
      Catch wex As WebException
          strResult = "Error, " + wex.Message
      Catch ex As Exception
          strResult = "Error, " + ex.Message
      Finally
          hwReq = Nothing
          hwRes = Nothing
      End Try
  End Sub
  </code></pre>