How to send SMS message from Visual Basic
This guide provides you information on how to send SMS text messages from Visual Basic. Text messages will be sent from VB 6 through HTTP with HTTP GET method. To achieve this solution download and extract VB6_example.zip file below in which the whole project is available.
Download: vb6-example-for-excel-v1.1.xlsDownload: vb6-example-for-access-v1.1.mdb
Download, extract VB6_example.zip and start the project.
On the appeared form provide the following values:
Port number: the port number of Ozeki NG SMS Gateway (9501)
Username: the username you use to log into Ozeki NG SMS Gateway (by default it is admin)
Password: the password used in Ozeki NG SMS Gateway (by default it is abc123)
Recipient: the phone number of the recipient (e.g. +36301122334)
Message: the body of the message (e.g. Test Message)
After filling the form click on Send Message (Figure 1).
On Figure 2 you can see the response from Ozeki NG SMS Gateway.
Figure 3 demonstrates the sent message in Ozeki NG SMS Gateway.
Source code
'This function opens an internet connection Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" _ (ByVal ozAgent As String, ByVal ozAccessType As Long, ByVal ozProxyName As String, _ ByVal ozProxyBypass As String, ByVal ozFlags As Long) As Long 'This function handles the closing of the internet connection Private Declare Function InternetCloseHandle Lib "wininet" (ByRef ozInet As Long) As Long 'Reads the response file of the retrieved file requested by HTTP Private Declare Function InternetReadFile Lib "wininet" _ (ByVal ozGetFile As Long, ByVal ozBuffer As String, ByVal ozNumBytesToRead As Long, ozNumberOfBytesRead As Long) As Integer 'Opens an URL via the internet connection Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" _ (ByVal ozInternetSession As Long, ByVal ozUrl As String, ByVal ozHeaders As String, _ ByVal ozHeadersLength As Long, ByVal ozFlags As Long, ByVal ozContext As Long) As Long ...
InternetOpen function creates Internet connection
InternetCloseHandle closes the connection
InternetOpenUrl opens an URL
InternetReadFile saves the HTTP response
... 'Sends the actual HTTP request Private Function SendRequest(ByVal strUrl As String) As String Dim ozConnOpen As Long, ozGetFile As Long Dim ozReturnValue As Long, ozBuffer As String * 128 Dim ozData As String ozConnOpen = InternetOpen("Ozeki HTTP client", 1, vbNullString, vbNullString, 0) If ozConnOpen = 0 Then MsgBox "No Internet connection avaible" Exit Function End If ozGetFile = InternetOpenUrl(ozConnOpen, strUrl, vbNullString, 0, &H4000000, 0) InternetReadFile ozGetFile, ozBuffer, 128, ozReturnValue ozData = ozBuffer Do While ozReturnValue <> 0 InternetReadFile ozGetFile, ozBuffer, 128, ozReturnValue ozData = ozData + Mid(ozBuffer, 1, ozReturnValue) Loop InternetCloseHandle ozGetFile InternetCloseHandle ozConnOpen SendRequest = ozData ozData = "" End Function ...
SendRequest function requests the URL
... Private Sub Command1_Click() Dim ozIpaddr As String Dim ozPortNum As String Dim ozUser As String Dim ozPass As String Dim ozRecipient As String Dim ozMessage As String ozIpaddr = Text1.Text ozPortNum = Text2.Text ozUser = Text3.Text ozPass = Text4.Text ozRecipient = Text5.Text ozMessage = Text6.Text Dim SendString As String 'SendString variable will contain the HTTP GET string, which will be used to send the message. SendString = "http://" + ozIpaddr + ":" + ozPortNum _ & "/api?action=sendmessage&username=" + ozUser _ & "&password=" + ozPass _ & "&recipient=" + ozURLEncode(ozRecipient) _ & "&messagetype=SMS:TEXT&messagedata=" + ozURLEncode(ozMessage) 'Sending the SMS with the HTTP request, and writing the response xml to the frame Label7.Caption = SendRequest(SendString) End Sub ...
Click event of Command1 button will execute the program and write the response XML
... 'This function will URL encode the characters in the HTTP request. Function ozURLEncode(ByVal Text As String) As String Dim i As Integer Dim ozCode As Integer Dim char As String ozURLEncode = Text For i = Len(ozURLEncode) To 1 Step -1 ozCode = Asc(Mid$(ozURLEncode, i, 1)) Select Case ozCode Case 48 To 57, 65 To 90, 97 To 122 ' Do not replace the alphanumeric characters Case 32 ' Replace the space character with "+" Mid$(ozURLEncode, i, 1) = "+" Case Else ' Replace the national characters with a percent sign and the characters hexadecimal value ozURLEncode = Left$(ozURLEncode, i - 1) & "%" & Hex$(ozCode) & Mid$ _ (ozURLEncode, i + 1) End Select Next End Function
ozURLEncode URL encodes its parameter
More information