Introduction
This article describes a simple way to send text messages to a cellular phone from within a VB.NET desktop application. The source code provided includes a relatively good list of carriers to simplify the task of connecting with a cell phone, and the task itself is really no more difficult than sending an email message through a desktop or web based application.
Getting Started
In order to begin, unzip the downloaded files and open the project provided. Within the project, you will find one main class: frmMain.vb. The main form is a Windows application form, and it contains a few controls necessary to capture the fields needed to properly form the message. These fields include:
- Recipient’s phone number: Captures the recipient’s cellular telephone number (10 digit).
- Recipient’s carrier: Captures the recipient’s carrier.
- Sender’s email address: Captures the sender’s email address.
- Sender’s email server: Captures the name of the sender’s email server.
- Message subject line: Captures the message’s title or subject.
- Message body: Captures the sender’s message content.
The application is simple, but could easily be improved by validating each of the required fields through the use of regular expressions or by at least validating that the text associated with each of the text boxes is not an empty string. To maintain the simplicity of the project, little in the way of error handling has been included.
The following figure (Figure 1) shows a properly configured collection of input fields in use:
Figure 1: The Demonstration Application in Use
A quick review of the code will reveal that there is little going on there. The following imports were added to the top of the class:
Imports System
Imports System.Net.Mail
The System.Net.Mail
import brings in the support necessary to transmit the messages generated using the application. Following the imports and the class declaration, there is a Declarations
region identified, and within that region is a collection of private member variables; these private member variables are created in order to supply each of the required elements of the message.
#Region "Declarations"
Private mMailServer As String
Private mTo As String
Private mFrom As String
Private mMsg As String
Private mSubject As String
#End Region
At this point, the only thing left to do in code is to write the following three methods:
#Region "Methods"
Private Sub frmMain_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
cboCarrier.Items.Add("@itelemigcelular.com.br")
cboCarrier.Items.Add("@message.alltel.com")
cboCarrier.Items.Add("@message.pioneerenidcellular.com")
cboCarrier.Items.Add("@messaging.cellone-sf.com")
cboCarrier.Items.Add("@messaging.centurytel.net")
cboCarrier.Items.Add("@messaging.sprintpcs.com")
cboCarrier.Items.Add("@mobile.att.net")
cboCarrier.Items.Add("@mobile.cell1se.com")
cboCarrier.Items.Add("@mobile.celloneusa.com")
cboCarrier.Items.Add("@mobile.dobson.net")
cboCarrier.Items.Add("@mobile.mycingular.com")
cboCarrier.Items.Add("@mobile.mycingular.net")
cboCarrier.Items.Add("@mobile.surewest.com")
cboCarrier.Items.Add("@msg.acsalaska.com")
cboCarrier.Items.Add("@msg.clearnet.com")
cboCarrier.Items.Add("@msg.mactel.com")
cboCarrier.Items.Add("@msg.myvzw.com")
cboCarrier.Items.Add("@msg.telus.com")
cboCarrier.Items.Add("@mycellular.com")
cboCarrier.Items.Add("@mycingular.com")
cboCarrier.Items.Add("@mycingular.net")
cboCarrier.Items.Add("@mycingular.textmsg.com")
cboCarrier.Items.Add("@o2.net.br")
cboCarrier.Items.Add("@ondefor.com")
cboCarrier.Items.Add("@pcs.rogers.com")
cboCarrier.Items.Add("@personal-net.com.ar")
cboCarrier.Items.Add("@personal.net.py")
cboCarrier.Items.Add("@portafree.com")
cboCarrier.Items.Add("@qwest.com")
cboCarrier.Items.Add("@qwestmp.com")
cboCarrier.Items.Add("@sbcemail.com")
cboCarrier.Items.Add("@sms.bluecell.com")
cboCarrier.Items.Add("@sms.cwjamaica.com")
cboCarrier.Items.Add("@sms.edgewireless.com")
cboCarrier.Items.Add("@sms.hickorytech.com")
cboCarrier.Items.Add("@sms.net.nz")
cboCarrier.Items.Add("@sms.pscel.com")
cboCarrier.Items.Add("@smsc.vzpacifica.net")
cboCarrier.Items.Add("@speedmemo.com")
cboCarrier.Items.Add("@suncom1.com")
cboCarrier.Items.Add("@sungram.com")
cboCarrier.Items.Add("@telesurf.com.py")
cboCarrier.Items.Add("@teletexto.rcp.net.pe")
cboCarrier.Items.Add("@text.houstoncellular.net")
cboCarrier.Items.Add("@text.telus.com")
cboCarrier.Items.Add("@timnet.com")
cboCarrier.Items.Add("@timnet.com.br")
cboCarrier.Items.Add("@tms.suncom.com")
cboCarrier.Items.Add("@tmomail.net")
cboCarrier.Items.Add("@tsttmobile.co.tt")
cboCarrier.Items.Add("@txt.bellmobility.ca")
cboCarrier.Items.Add("@typetalk.ruralcellular.com")
cboCarrier.Items.Add("@unistar.unifon.com.ar")
cboCarrier.Items.Add("@uscc.textmsg.com")
cboCarrier.Items.Add("@voicestream.net")
cboCarrier.Items.Add("@vtext.com")
cboCarrier.Items.Add("@wireless.bellsouth.com")
End Sub
Private Sub btnSend_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSend.Click
mTo = Trim(txtPhoneNumber.Text) & _
Trim(cboCarrier.SelectedItem.ToString())
mFrom = Trim(txtSender.Text)
mSubject = Trim(txtSubject.Text)
mMailServer = Trim(txtMailServer.Text)
mMsg = Trim(txtMessage.Text)
Try
Dim message As New MailMessage(mFrom, mTo, mSubject, mMsg)
Dim mySmtpClient As New SmtpClient(mMailServer)
mySmtpClient.UseDefaultCredentials = True
mySmtpClient.Send(message)
MessageBox.Show("The mail message has been sent to " & _
message.To.ToString(), "Mail", _
MessageBoxButtons.OK, _
MessageBoxIcon.Information)
Catch ex As FormatException
MessageBox.Show(ex.StackTrace, ex.Message, _
MessageBoxButtons.OK, _
MessageBoxIcon.Error)
Catch ex As SmtpException
MessageBox.Show(ex.StackTrace, ex.Message, _
MessageBoxButtons.OK, _
MessageBoxIcon.Error)
Catch ex As Exception
MessageBox.Show(ex.StackTrace, ex.Message, _
MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnExit_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnExit.Click
Application.Exit()
End Sub
#End Region
At this point, the application should be complete. You may wish to build the solution and test it. Even though this example was intended to be simple, the overall concept may be used within an application to do some seemingly complex jobs. For example, if you were tasked with writing an application that monitored some sort of trend information such as a daily stock price, and were to alert a group of end users whenever the stock price exceeded some predetermined, agreed upon value, you could do something such as looping through a collection of users subscribing to the stock price monitoring service and direct a text message to each of these users indicating that the watched stock had surpassed the threshold value.
Also, please note that, whilst it does cost you a dime to send a message to a cell phone in this manner, it may well cost the recipient something to receive it. Bearing that in mind, as you test your version of the code, be mindful of any expenses you may be generating for yourself (if, for example, you are sending messages to yourself) or another person.