Você está na página 1de 34

18/01/23, 15:34 Enviando SMS com C# e VB.

NET - André Alves de Lima

André Alves de Lima


TALKING ABOUT SOFTWARE DEVELOPMENT AND MORE…

Início Software Development And more Inscreva-se Sobre

18
10 2017 Enviando SMS com C# e VB.NET
ANDREALVESLIMA | .NET, SOFTWARE DEVELOPMENT | 60

Eu não sei exatamente porque o tema “envio de SMS” foi um dos mais votados na
minha última pesquisa de temas para próximos artigos. Não imaginava que essa
fosse uma funcionalidade tão desejada assim nas aplicações de hoje em dia, mas
aparentemente ela é. Atendendo aos seus pedidos, hoje vamos aprender a enviar
SMS com C# e VB.NET utilizando basicamente duas estratégias. A primeira
estratégia será através de um modem 3G conectado ao computador e a segunda
estratégia será a utilização de serviços comerciais que possibilitam o envio de
SMS automatizado.

2010 - 2015

E-book sobre Report Viewer

Criando o “esqueleto” da aplicação


A aplicação que construiremos nesse artigo será muito simples. Nós teremos
basicamente uma aplicação “Windows Forms” com um formulário contendo dois
TextBoxes (um para definir o número do destinatário e outro para a mensagem) e
um botão (para enviar a mensagem), bem como um ComboBox onde
Curso sobre Report Viewer
escolheremos o método de envio que deverá ser utilizado:

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 1/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Chamei os TextBoxes de “tbTelefone” e “tbMensagem“. O botão recebeu o nome de Receba outras dicas!
“btEnviar” e o ComboBox recebeu o nome de “cbMetodo“. Dentro do ComboBox
Inscreva-se para ficar por
nós teremos os seguintes itens: dentro das novidades do
meu site e receber dicas
extras que eu só compartilho
por e-mail!

Email Address*

Nome

Sobrenome
Observe que o primeiro método corresponderá ao envio pelo modem 3G, já os
outros quatro métodos são serviços comerciais que possibilitam o envio
automatizado de SMS.

É importante salientar que o tipo de projeto escolhido (“Windows Forms“) não * = campo obrigatório
tem nada a ver com questões de limitação das metodologias que serão
apresentadas no artigo. Você pode utilizar exatamente a mesma implementação CADASTRAR
em outros tipos de projeto, como Console Application, WPF e ASP.NET.

O código do clique do botão “Enviar” terá um “switch case” que chamará o método powered by MailChimp!

correspondente dependendo da opção selecionada no ComboBox.


Implementaremos cada um desses métodos nas próximas seções deste artigo:

1 // C# Categorias
2 private void btEnviar_Click(object sender, EventArgs e)
3 {
4     try .NET
5     {
6         switch (cbMetodo.SelectedItem.ToString()) .NET Core
7         {
8             case "Modem": Acesso a dados
9                 EnviarModem();
10                 break; Alemanha
11             case "Twilio":
12                 EnviarTwilio(); And more…
13                 break;
14             case "Ipipi":
ASP.NET
15                 EnviarIpipi();
16                 break;
17             case "ViaNett": Crystal Reports
18                 EnviarViaNett();
19                 break; Entity Framework
20             case "LocaSMS":
21                 EnviarLocaSMS(); MVP

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 2/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima
22                 break; Relatórios
23         }
24     }
Report Viewer
25     catch (Exception ex)
26     {
27         MessageBox.Show(ex.Message, "Erro", MessageBoxBut Reporting Services
28     }
29 } Software Development

TFS
1 ' VB.NET
2 Private Sub BtEnviar_Click(sender As Object, e As EventAr Viagens
3     Try
4         Select Case CbMetodo.SelectedItem.ToString() Visual Studio
5             Case "Modem"
6                 EnviarModem() Windows Forms
7                 Exit Select
8             Case "Twilio" WinRT
9                 EnviarTwilio()
10                 Exit Select WPF
11             Case "Ipipi"
12                 EnviarIpipi() Xamarin
13                 Exit Select
14             Case "ViaNett"
15                 EnviarViaNett()
16                 Exit Select
17             Case "LocaSMS"
18                 EnviarLocaSMS()
19                 Exit Select Arquivos
20         End Select
21     Catch Ex As Exception
22         MessageBox.Show(ex.Message, "Erro", MessageBoxBut [+]
23     End Try
24 End Sub 2018

[−]

Opção 1: enviando SMS com modem 3G 2017

dezembro
A primeira opção que iremos implementar é o envio de SMS através de um
modem 3G conectado ao computador. Essa é uma opção bem flexível porque você novembro
pode facilmente trocar o sim card do seu modem 3G para obter tarifas mais
outubro
atrativas dependendo da região onde a aplicação será utilizada. Além disso, você
não fica à mercê de uma empresa específica que fará o envio do SMS. setembro

Depois de pesquisar um bocado, eu encontrei três links relacionados a esse tipo agosto
de implementação: julho

How to Send and Receive SMS using GSM Modem junho

Send SMS Using GSM Modem with C# maio

Send and Read SMS through a GSM Modem using AT Commands abril

Os dois primeiros utilizam bibliotecas terceiras que não estão disponíveis no março

NuGet. Elas são bibliotecas gratuitas, mas você tem que adicionar a referência no fevereiro
seu projeto “na mão“. Eu não queria ter que demonstrar isso no artigo, por isso
fiquei feliz quando encontrei o terceiro artigo, que mostra como enviar SMS com janeiro
modem 3G através de comandos diretos utilizando a classe SerialPort, que é
[+]
basicamente o que a biblioteca dos outros dois artigos implementa por trás dos
panos. 2016

Depois de dar uma estudada no projeto apresentado no terceiro artigo, criei uma [+]
versão extremamente simplificada para podermos utilizar no nosso projeto de 2015
exemplo. Se você quiser mais opções de configuração, baixe o projeto do terceiro
link e dê uma estudada na implementação dele. [+]
2014

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 3/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Quando conectamos um modem 3G no nosso computador, os drivers do


[+]
dispositivo farão com que esse modem fique acessível através de uma porta COM.
Uma vez que você saiba a porta COM utilizada pelo seu dispositivo (no meu caso 2013

é sempre a porta COM5 – descobri isso através do gerenciador de dispositivos do


[+]
Windows), basta utilizarmos um objeto do tipo SerialPort para executarmos
comandos nesse modem 3G. 2012

Para enviarmos uma mensagem SMS através de um modem 3G, precisamos [+]
executar 4 comandos. O primeiro comando inicia a comunicação com o modem. 2011
Em seguida, precisamos configurar o modo de envio para “texto“, já que estamos
trabalhando com envio de SMS. Por fim, enviamos o número do destinatário e a [+]
mensagem, seguido de um caractere UTF32 de código 26 (que representa “fim de 2010
arquivo“). Cada um dos comandos (exceto o último) deverá ser seguido por um
caractere de retorno de linha (carrier return – “\r“). [+]
2009
Veja como é que fica o código para enviarmos um SMS com C# e VB.NET
utilizando o modem 3G conectado ao computador: [+]

1 // C# 2008
2 private void EnviarModem()
3 { [+]
4     using (var port = new System.IO.Ports.SerialPort())
5     { 2007
6         port.PortName = "COM5";
7         port.Open(); [+]
8         port.DtrEnable = true;
9         port.RtsEnable = true; 2006
10         port.Write("AT\r"); // iniciando a comunicação
11         port.Write("AT+CMGF=1\r"); // setando a comunicaç
12         port.Write(string.Format("AT+CMGS=\"{0}\"\r", tbT
13         port.Write(tbMensagem.Text + char.ConvertFromUtf3
14     }
15 }

1 ' VB.NET
2 Private Sub EnviarModem()
3     Using Port = New System.IO.Ports.SerialPort()
4         Port.PortName = "COM5"
5         Port.Open()
6         Port.DtrEnable = True
7         Port.RtsEnable = True
8         Port.Write("AT" & vbCr) ' iniciando a comunicação
9         Port.Write("AT+CMGF=1" & vbCr) ' setando a comuni
10         Port.Write(String.Format("AT+CMGS=""{0}""" & vbCr
11         Port.Write(TbMensagem.Text + Char.ConvertFromUtf3
12     End Using
13 End Sub

E não é que funciona?

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 4/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Edit: algumas pessoas enviaram comentários e e-mails falando que essa


implementação não funcionou com o modem delas. A minha sugestão nesse caso
sempre foi dar uma olhada no código completo do artigo que eu utilizei como
base para escrever esse código acima. Porém, ontem (12/12/2017) o Elton Santos
(da Zipersoft) me enviou um código mais completo, mas somente com a parte
necessária para fazer o envio da mensagem. Ele me mandou o código e liberou
para que eu compartilhasse aqui no site. Os créditos vão para Elton Rodrigo dos
Santos e Thaís Costa Tozatto:

1 // C#
2 private bool EnviaSms(string numero, string mensagem)
3 {
4     using (SerialPort serialPort = new SerialPort())
5     {
6         bool mensagemEnviada = false;
7  
8         try
9         {
10             receiveNow = new AutoResetEvent(false);
11             serialPort.PortName = "COM5";
12             serialPort.Handshake = Handshake.RequestToSe
13             serialPort.DtrEnable = true;
14             serialPort.RtsEnable = true;
15             serialPort.NewLine = Environment.NewLine;
16             serialPort.DataReceived += new SerialDataRec
17             serialPort.Open();
18             string recievedData = ExecCommand(serialPort
19             recievedData = ExecCommand(serialPort, "AT+C
20             String command = "AT+CMGS=\"" + numero + "\"
21             recievedData = ExecCommand(serialPort, comma
22             command = mensagem + char.ConvertFromUtf32(2
23             recievedData = ExecCommand(serialPort, comma
24             serialPort.Close();
25             if (recievedData.EndsWith("\r\nOK\r\n"))
26             {
27                 mensagemEnviada = true;
28             }
29             else if (recievedData.Contains("ERROR"))
30             {
31                 mensagemEnviada = false;
32             }
33         }
34         catch (Exception ex)
35         {
36             MessageBox.Show("Erro ao enviar SMS: " + ex.
37         }
38         return mensagemEnviada;
39     }
40 }
41  

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 5/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima
42 private string ExecCommand(SerialPort port, string comma
43 {
44     try
45     {
46  
47         port.DiscardOutBuffer();
48         port.DiscardInBuffer();
49         receiveNow.Reset();
50         port.Write(command + "\r");
51  
52         string input = ReadResponse(port, responseTimeou
53         if ((input.Length == 0) || ((!input.EndsWith("\r
54             throw new ApplicationException("No success m
55         return input;
56     }
57     catch (Exception ex)
58     {
59         throw ex;
60     }
61 }
62  
63 public string ReadResponse(SerialPort port, int timeout)
64 {
65     string buffer = string.Empty;
66     try
67     {
68         do
69         {
70             if (receiveNow.WaitOne(timeout, false))
71             {
72                 string t = port.ReadExisting();
73                 buffer += t;
74             }
75             else
76             {
77                 if (buffer.Length > 0)
78                     throw new ApplicationException("Resp
79                 else
80                     throw new ApplicationException("No d
81             }
82         }
83         while (!buffer.EndsWith("\r\nOK\r\n") && !buffer
84     }
85     catch (Exception ex)
86     {
87         throw ex;
88     }
89     return buffer;
90 }
91  
92 public void port_DataReceived(object sender, SerialDataR
93 {
94     try
95     {
96         if (e.EventType == SerialData.Chars)
97         {
98             receiveNow.Set();
99         }
100     }
101     catch (Exception ex)
102     {
103         throw ex;
104     }
105 }

Opção 2: serviços comerciais para envio de SMS


Além do envio de SMS através de um modem 3G conectado ao computador,
podemos utilizar também serviços comerciais que oferecem essa funcionalidade.
Existem inúmeros serviços desse tipo, principalmente fora do Brasil. Depois de
pesquisar um pouco, cheguei a uma lista de serviços que eu decidi testar para
apresentar os resultados neste artigo.
www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 6/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Twilio

O Twilio é aparentemente o serviço mais completo no que diz respeito às


funcionalidades de telefonia. Eles trabalham não somente com envio e
recebimento de SMS, mas também MMS, mensagens de voz e outras
funcionalidades que eu acabei não me aprofundando.

Uma parte chata do Twilio é o cadastro e configuração do número que será


utilizado para enviar as mensagens. Depois de seguir todos os passos para
criarmos uma conta trial (através deste link), cairemos no dashboard do Twilio,
que terá duas informações importantíssimas que serão necessárias no
desenvolvimento da aplicação: o SID e o token da nossa conta

Para enviarmos um SMS com o Twilio, primeiramente nós precisamos de um


número de saída. Esse número de saída pode ser criado clicando no link
“Programmable SMS“, depois em “Get Started” e, por fim, em “Get a number“:

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 7/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Eu segui as instruções tentando criar um número aqui da Alemanha, porém, para


números daqui eu teria que escanear um documento pessoal e anexar no sistema,
de forma que eu conseguisse comprovar que era realmente eu quem estava
criando aquele número (típica burocracia):

Obviamente, como eu só estava testando o serviço para escrever esse artigo, eu


não queria anexar documento pessoal nenhum no sistema deles, então, resolvi
tentar com um número brasileiro. Porém, números de saída brasileiros não têm
suporte a SMS no Twilio:

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 8/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Por fim, consegui criar um número americano, que obviamente tem suporte ao
envio de SMS:

Uma vez criado o número de saída, anote essa informação, além do SID e token da
conta que você encontra no dashboard principal do Twilio. Precisaremos desses
três dados para implementarmos o envio de SMS com o Twilio.

Primeiramente, nós precisamos adicionar uma referência à biblioteca do Twilio via


NuGet:

Feito isso, em algum lugar no código de inicialização da aplicação, nós temos que
fazer a configuração inicial da biblioteca do Twilio, onde informaremos o SID e
token da nossa conta. Você poderia fazer isso no arquivo “Program.cs“, antes de
chamar o formulário principal. Porém, como essa aplicação de exemplo só tem um
formulário, eu resolvi fazer essa inicialização do Twilio no construtor do
formulário (ou no evento “Load” do formulário no VB.NET):

1 // C#
2 public Form1()
3 {
4     InitializeComponent();
5     Twilio.TwilioClient.Init("SID", "TOKEN");
6 }

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 9/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima
1 ' VB.NET
2 Private Sub Form1_Load(sender As Object, e As EventArgs) H
3     Twilio.TwilioClient.Init("SID", "TOKEN")
4 End Sub

Com as informações de autenticação configuradas, nós podemos enviar um SMS


com o Twilio através do método “MessageResource.Create“. Veja só que fácil:

1 // C#
2 private void EnviarTwilio()
3 {
4     var resultado = Twilio.Rest.Api.V2010.Account.MessageR
5         to: new Twilio.Types.PhoneNumber(tbTelefone.Text),
6         from: new Twilio.Types.PhoneNumber("SEU_NUMERO_TWI
7         body: tbMensagem.Text);
8 }

1 ' VB.NET
2 Private Sub EnviarTwilio()
3     Dim Resultado = Twilio.Rest.Api.V2010.Account.MessageR
4         [to]:=New Twilio.Types.PhoneNumber(TbTelefone.Text
5         from:=New Twilio.Types.PhoneNumber("SEU_NUMERO_TWI
6         body:=TbMensagem.Text)
7 End Sub

Vamos testar para ver se funciona?

Observe que o número do remetente será o seu número do Twilio (que eu ocultei
o meu por questões de segurança) e, no período trial, a mensagem original será
precedida por uma mensagem indicando o trial. Além disso, você só conseguirá
enviar mensagens no período de trial para números que estiverem confirmados
na sua lista de telefones.

Se dermos uma olhada na seção de gastos da nossa conta, veremos que esse SMS
de teste custou $0.085 dos créditos gratuitos que recebemos ao criar a conta trial.

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 10/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

O valor final das mensagens varia de acordo com o país dos números remetente e
destinatário. Você encontra todos os detalhes de preço por mensagem para cada
país na página de preços do Twilio.

ViaNett

O próximo serviço que eu testei foi a ViaNett. Ao fazermos o cadastro da conta


trial (a partir deste link), recebemos 5 mensagens para testarmos o serviço. Ao
contrário do Twilio, o cadastro de uma conta trial na ViaNett é muito simples.
Uma vez confirmado o e-mail, você receberá o usuário e senha na sua caixa de
entrada. Com essa informação em mãos, nós conseguimos partir para a
implementação do nosso código.

No caso da ViaNett, a utilização do serviço se dá a partir de um web service SOAP.


Ou seja, nós temos que adicionar uma referência de serviço no nosso projeto
apontando para a seguinte URL:

http://smsc.vianett.no/v3/cpa/cpawebservice.asmx

Dê o nome de “ViaNett” para a nova referência de serviço:

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 11/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Com a referência criada, nós conseguimos instanciar um novo cliente da ViaNett.


Através dessa instância, nós mandaremos o nosso SMS com o método
“SendSMS_Simple1“:

1 // C#
2 private void EnviarViaNett()
3 {
4     using (var vianett = new ViaNett.CPAWebServiceSoapCli
5     {
6         var resultado = vianett.SendSMS_Simple1(
7             "USER", "PWD",
8             Convert.ToInt64(tbTelefone.Text.Replace("+",
9             tbMensagem.Text);
10     }
11 }

1 ' VB.NET
2 Private Sub EnviarViaNett()
3     Using ViaNettClient = New ViaNett.CPAWebServiceSoapCli
4         Dim Resultado = ViaNettClient.SendSMS_Simple1("USE
5     End Using
6 End Sub

Observe que o código é muito simples. O método “SendSMS_Simple1” recebe o


nome do usuário, senha, número de telefone do destinatário (em formato
numérico, sem o “+“) e a mensagem. Porém, ao tentarmos enviar uma mensagem
com esse código, receberemos o seguinte erro:

Esse erro acontece porque a referência de serviço tem dois bindings no arquivo
“app.config“. Um utiliza a versão 1.1 do protocolo SOAP e o outro utiliza a versão
1.2:

Vamos utilizar a versão mais nova indicando o nome do endpoint


(“CPAWebServiceSoap12“) na hora de criarmos a instância do cliente:

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 12/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima
1 // C#
2 using (var vianett = new ViaNett.CPAWebServiceSoapClient("

1 ' VB.NET
2 Using ViaNettClient = New ViaNett.CPAWebServiceSoapClient(

Uma vez realizada essa alteração, teste novamente a aplicação e veja que o SMS
também será enviado corretamente através do serviço da ViaNett:

No caso da conta trial da ViaNett, nós não teremos nenhuma alteração na


mensagem. Porém, o remetente será identificado como “DemoSMS“.

Ipipi

O Ipipi é outro serviço bem famoso que teoricamente tem a opção de criarmos
uma conta trial (através deste link), mas eu não obtive resposta até o momento
do fechamento da escrita deste artigo. Porém, vamos fazer de conta que nós
temos um usuário e senha em mãos para esse serviço. Como é que nós fazemos
para enviar um SMS com C# e VB.NET através dele? Simples! Da mesma maneira
que fizemos com o ViaNett, nós também temos web services SOAP para envio de
mensagens com o Ipipi.

Nesse caso, precisaremos de duas referências de serviço. Uma para conseguirmos


um token através do usuário e senha (ou seja, o serviço de autenticação), cuja URL
é a seguinte:

http://api.upsidewireless.com/soap/Authentication.asmx

O outro serviço é o que faz o envio da mensagem em si. A URL para esse segundo
serviço é a seguinte:

http://api.upsidewireless.com/soap/SMS.asmx

Daremos o nome de “IpipiAuth” e “Ipipi” para as referências de serviço que serão


criadas:

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 13/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Com essas referências adicionadas, o código para enviarmos um SMS com o Ipipi
seria o seguinte:

1 // C#
2 private void EnviarIpipi()
3 {
4     using (var ipipiAuth = new IpipiAuth.AuthenticationSo
5     using (var ipipi = new Ipipi.SMSSoapClient())
6     {
7         var authInfo = ipipiAuth.GetParameters("user", "p
8         var resultado = ipipi.Send_Plain(authInfo.Token,
9     }
10 }

1 ' VB.NET
2 Private Sub EnviarIpipi()
3     Using IpipiAuthClient = New IpipiAuth.AuthenticationSo
4         Using IpipiClient = New Ipipi.SMSSoapClient()
5             Dim AuthInfo = IpipiAuthClient.GetParameters("
6             Dim Resultado = IpipiClient.Send_Plain(AuthInf
7         End Using

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 14/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima
8     End Using
9 End Sub

Os serviços do Ipipi também estão disponíveis tanto em SOAP 1.1 quanto em 1.2,
portanto, se executarmos a aplicação sem especificarmos um endpoint,
receberemos um erro:

Tentei utilizar a versão 1.2 (como fizemos com o ViaNett), porém, só recebi erros
estranhos:

Dessa forma, resolvi utilizar os endpoints com a versão 1.1 do SOAP


(“AuthenticationSoap” e “SMSSoap“), que retornou erros que faziam mais sentido,
uma vez que eu não tenho credenciais válidas para esse serviço:

1 // C#
2 using (var ipipiAuth = new IpipiAuth.AuthenticationSoapCli
3 using (var ipipi = new Ipipi.SMSSoapClient("SMSSoap"))

1 ' VB.NET
2 Using IpipiAuthClient = New IpipiAuth.AuthenticationSoapCl
3     Using IpipiClient = New Ipipi.SMSSoapClient("SMSSoap")

Imagino que se tivéssemos as credenciais válidas, o serviço funcionaria


corretamente. Se alguém conseguir testar o código com credenciais válidas, por
favor, avisa nos comentários se funcionou direitinho.

LocaSMS

Até agora eu só mostrei serviços internacionais para envio de SMS. Será que não
existe nenhum serviço brasileiro que implemente esse tipo de funcionalidade?

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 15/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Eu encontrei alguns, mas o único que fornecia uma conta trial era o LocaSMS.
Entretanto, o site de cadastro só aceita números do Brasil. Tentei entrar em
contato com a empresa para ver se eu não conseguia uma conta trial mesmo sem
um número do Brasil, mas a resposta não foi nada animadora:

De qualquer forma, resolvi mesmo assim implementar o código que serviria para
enviarmos SMS com o LocaSMS. Caso você consiga uma conta trial para testar,
avisa depois nos comentários se o código funcionou ou não.

O serviço da LocaSMS funciona também baseado em web service SOAP. Nesse


caso, temos que adicionar uma referência de serviço para a seguinte URL:

http://54.173.24.177/painel/ServiceSms.asmx

Uma vez adicionada a referência, conseguimos enviar a mensagem através do


método “SendSMS“:

1 // C#
2 private void EnviarLocaSMS()
3 {
4     using (var locasms = new LocaSMS.ServiceSMSSoapClient
5     {
6         var resultado = locasms.SendSMS("USER", "PWD",
www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 16/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima
7             new LocaSMS.rSMS()
8             {
9                 Destinations = new []
10                 {
11                     new LocaSMS.Destination()
12                     {
13                         Number = tbTelefone.Text
14                     }
15                 },
16                 Msg = tbMensagem.Text
17             });
18     }
19 }

1 ' VB.NET
2 Private Sub EnviarLocaSMS()
3     Using locasms = New LocaSMS.ServiceSMSSoapClient()
4         Dim resultado = locasms.SendSMS(
5             "USER", "PWD",
6             New LocaSMS.rSMS() With
7             {
8                 .Destinations =
9                 {
10                     New LocaSMS.Destination() With
11                     {
12                         .Number = TbTelefone.Text
13                     }
14                 },
15                 .Msg = TbMensagem.Text
16             })
17     End Using
18 End Sub

Obviamente, como eu não tenho credenciais válidas, eu recebi um erro de “falha


de login” ao tentar enviar uma mensagem:

Outros serviços não testados

Neste artigo eu só mostrei serviços que tinham a possibilidade de criação de


contas trial. Nas minhas pesquisas eu acabei me deparando com outros dois
serviços brasileiros que não disponibilizavam a criação de contas para testes.
Caso você queira pagar para testá-los, aqui vai o link para eles:

– Mais Resultado (tutorial aqui)


– Zenvia

Baixe o projeto de exemplo


Para baixar o projeto de exemplo desse artigo, assine a minha newsletter. Ao fazer
isso, além de ter acesso ao projeto, você receberá um e-mail toda semana sobre o
artigo publicado e ficará sabendo também em primeira mão sobre o artigo da
próxima semana, além de receber dicas “bônus” que eu só compartilho por e-mail.
Inscreva-se utilizando o formulário no final do artigo.

Concluindo
Como vimos no artigo de hoje, o envio de SMS com C# e VB.NET pode ser
implementado basicamente de duas maneiras: ou utilizamos um modem 3G

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 17/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

conectado ao computador, ou utilizamos serviços comerciais que implementem


esse tipo de funcionalidade.

O projeto de exemplo implementado mostra primeiramente o envio de SMS


através de um modem 3G, que pode ser feito tanto com bibliotecas externas
quanto com comandos diretos via porta serial. Em seguida, aprendemos a enviar
SMS através dos serviços Twilio, ViaNett, Ipipi e LocaSMS.

E você, já precisou enviar SMS na sua aplicação? Qual foi a estratégia que você
utilizou? Se você contratou algum serviço, qual foi o que te proporcionou o
melhor custo / benefício? Fico aguardando o resultado das suas experiências na
caixa de comentários logo abaixo!

Até a próxima!

André Lima

Image by Pixabay used under Creative Commons


https://pixabay.com/en/sms-shortcuts-characters-symbol-1949054/

Newsletter do André Lima

* indicates required
Email

*
Nome

Sobrenome

Powered by MailChimp

INSCREVA-SE!

IMPRIMINDO INFORMAÇÕES DIRETO NA IMPRESSORA COM C#

SOMATÓRIO DE HORAS NO REPORT VIEWER

60 thoughts on “Enviando SMS com C# e VB.NET”

Ahmed Kelany disse:


18 de outubro de 2017 às 15:36

Thanks!
The use of the modem is currently my best option,
You did quite a lot of working and researching and applying which is
amazing for a lazy person like me :)

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 18/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Your work is always an inspiration,


Thanks a lot and I wish you the best always!

RESPONDER

andrealveslima disse:
18 de outubro de 2017 às 16:38

Hey Ahmed! Thank you very much for your comment and your kind
words.. :)
I also have fun researching and writing these articles, so it’s a win-
win situation.. ;)

Regards,
Andre Lima

RESPONDER

André Spilari disse:


18 de outubro de 2017 às 16:32

estava esperando ansiosamente um post desse… rsrsrs se é fera andre


valew

RESPONDER

andrealveslima disse:
18 de outubro de 2017 às 16:45

Fala André! Que é isso.. Fico feliz por conseguir ajudar de alguma
maneira.. ;)
Qualquer coisa estamos aí..

Abraço!
André Lima

RESPONDER

José Eustáquio Santana disse:


19 de outubro de 2017 às 2:44

Eu estou utilizando a Zenvia para envio em minha empresa.

Porém vou olhar e estudar melhor essa questão do MODEM.

Como.ira funcionar a limitação de qtd de SMS e o custo das


mensagens????

RESPONDER

andrealveslima disse:
19 de outubro de 2017 às 9:29

Olá José, obrigado pelo comentário!

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 19/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Nesse caso o modem terá o chip de uma operadora dentro dele,


certo? As limitações de SMS e custo por mensagem enviada estão
definidos no contrato que você tiver com essa operadora.. Ou seja, é
como se você estivesse enviando os SMS pelo celular, só que de
forma automatizada..

Abraço!
André Lima

RESPONDER

Ricardo Fabricio disse:


19 de outubro de 2017 às 5:40

Olá, seus artigos são D+ mas este me deixou com duas duvidas, são elas:

1 – É possível receber um sms de resposta?

2 – A implementação via Modem pode ser feita com modem de qualquer


modelo, ou é necessário um modelo especifico ?

obrigado por compartilhar seu tempo e conhecimento com a gente…

RESPONDER

andrealveslima disse:
19 de outubro de 2017 às 9:35

Olá Ricardo, muito obrigado pelo comentário e pelo elogio! :)

Quanto às suas perguntas:

1) Esse é outro tema a parte.. Se você estiver trabalhando com um


modem conectado ao computador, dá para receber SMSs através de
comunicação via porta serial também (o terceiro link que eu postei
no artigo tem um exemplo de recebimento de SMS nesse estilo
também).. Já se for com serviços comerciais, tem que ver se eles
suportam esse tipo de funcionalidade..

2) Normalmente esses modems se comunicam através de uma


porta serial emulada, então teoricamente deve funcionar para
qualquer modem.. Eu testei com o meu e funcionou de boa.. Se
você tiver a oportunidade de testar, avisa aqui depois pra gente se
funcionou sem problema ou não..

Abraço!
André Lima

RESPONDER

Alexssandro Dutra de Lima Dutra disse:


20 de outubro de 2017 às 18:01

Parabéns amigo andre, fico feliz em ter conhecido você e com isso coisas
simples que você posta aumenta nossa vontade de programar, obrigado e
continue assim.

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 20/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima
RESPONDER

andrealveslima disse:
23 de outubro de 2017 às 8:52

Olá Alexssandro!

Poxa, muito obrigado pelo comentário e por essas pelas palavras..


Fico feliz por estar conseguindo ajudar de alguma forma.. :)

Um forte abraço e uma ótima semana!


André Lima

RESPONDER

Alessandro Ferraz disse:


20 de outubro de 2017 às 23:13

André você é o cara, parabéns pelo belo post.

Seus artigos é top, você poderia mostrar algo sobre NFe, consumir o
webservice envio etc.

grato.
Alessandro Ferraz

RESPONDER

andrealveslima disse:
23 de outubro de 2017 às 11:49

Olá Alessandro, muito obrigado pelo comentário e pelo elogio!

Quanto a NFE, esse é um tema que me pedem com uma certa


frequencia.. O grande problema é que eu não tenho absolutamente
nenhuma experiência nessa área.. Mas, de qualquer forma, está aqui
na minha lista.. Quem sabe um dia consigo tirar um tempo para
estudar essa parada e aí eu escrevo um artigo compartilhando os
meus aprendizados.. :)

Abraço!
André Lima

RESPONDER

Alexandre disse:
21 de outubro de 2017 às 1:17

Boa Noite, tentei pelo método ViaNett, minha operadora é a Oi

será que de alguma maneira ela pode bloquear este tipo de mensagem,
pois, no status do ViaNett ele registra minhas requisições porem a msg fica
REJECTED

RESPONDER

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 21/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

andrealveslima disse:
23 de outubro de 2017 às 11:52

Olá Alexandre!

Que estranho hein.. Você já tentou enviar para outro número de


outra operadora para ver se funciona? Aqui funcionou de boa, e já
vi outras pessoas em comentários do Facebook falando que
trabalham com a ViaNett..

Qual é exatamente a mensagem que aparece no painel da ViaNett?


Só aparece “REJECTED”, nenhuma informação a mais?

Abraço!
André Lima

RESPONDER

Alexandre disse:
23 de outubro de 2017 às 21:04

Boa tarde andré, então a mensagem no dashboard em bem


vaga, só aparece rejected e o error cod 0x00000

fiz o up da imagem aqui


http://prntscr.com/h12g5w

RESPONDER

andrealveslima disse:
24 de outubro de 2017 às 9:37

Olá Alexandre!

Que coisa estranha hein.. Tentei enviar um SMS para


você e o resultado foi o mesmo.. Mandei um e-mail
para o suporte da ViaNett.. Assim que eles
responderem eu te falo qual foi o posicionamento
deles..

Abraço!
André Lima

RESPONDER

Alexandre Oliveira disse:


24 de outubro de 2017 às 20:48

puxa vida, muito obrigado viu, agradeço pelo


seu empenho em tentar solucionar

andrealveslima disse:
25 de outubro de 2017 às 5:57

Olá Alexandre!

Magina, sem problema.. Assim que eles


responderem (isso é, se eles responderem), eu
te informo sobre o posicionamento deles..

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 22/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Abraço!
André Lima

andrealveslima disse:
31 de outubro de 2017 às 12:30

Olá Alexandre!

O pessoal da ViaNett me respondeu.. Eles


disseram que outras pessoas estão com o
mesmo problema e que aparentemente existe
uma limitação no horário de envio de SMS
para o Brasil a partir do serviço deles, que
seria das 09:00 às 21:00 (horário do Brasil)..
Veja a resposta completa:

Caso eu receba mais algum retorno deles, eu


volto a informar aqui..

Abraço!
André Lima

andrealveslima disse:
1 de novembro de 2017 às 12:57

Olá novamente, Alexandre!

Recebi mais um retorno do pessoal da


ViaNett.. O funcionário avisou que essa
restrição de horário está implementada para
mensagens de propaganda e de testes.. Para
assinantes existe uma possibilidade de alterar
o gateway da mensagem e aí não teria a
restrição de horário..

Abraço!
André Lima

Alexandre disse:
1 de novembro de 2017 às 13:28

Obrigado

Altamiro disse:
21 de outubro de 2017 às 3:57

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 23/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Parabéns pelo excelente trabalho. Muito bom.

RESPONDER

andrealveslima disse:
23 de outubro de 2017 às 8:57

Olá Altamiro, muito obrigado pelo comentário! Fico feliz que você
tenha gostado.. :)

Abraço!
André Lima

RESPONDER

deuzivaldo disse:
21 de outubro de 2017 às 14:53

Bom dia professor


Bom há alguns anos atrás eu precisei muito disso, não quero dizer que não
vou precisar de novo por isso vou criar um para min e testa-lo muito
obrigado valeu.
Abraços professor e bom final de semana

RESPONDER

andrealveslima disse:
23 de outubro de 2017 às 13:38

Olá Deuzivaldo!

Legal, qualquer dúvida nos testes, é só entrar em contato..

Um forte abraço e uma ótima semana aí pra você!


André Lima

RESPONDER

Marcos disse:
23 de outubro de 2017 às 15:33

Bom dia, primeiramente parabens pelo artigo, sem duvida vai ajudar e já
esta ajudando muitas pessoas.
Eu tentei fazer no visual basic, mas aparece a mensagem dizendo que não
é possivel acessar a porta solicitada. O que pode ser?

RESPONDER

andrealveslima disse:
23 de outubro de 2017 às 20:16

Olá Marcos, muito obrigado pelo comentário!

Como respondi no seu e-mail, acredito que alguma outra aplicação


esteja acessando a porta utilizada pelo modem.. E como as portas
seriais são de acesso exclusivo, você não consegue acessá-las a
www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 24/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

partir de duas aplicações ao mesmo tempo.. No meu caso, foi só


fechar a aplicação que vem junto com o meu modem e aí o acesso
foi liberado para a minha aplicação..

Abraço!
André Lima

RESPONDER

Marcos disse:
24 de outubro de 2017 às 15:25

Bom dia André. O problema era o modelo do modem da vivo,


com o modelo novo 4g não consegui fazer funcionar que é
da D link, mas com o modelo antigo 3g da Hawaii funcionou
perfeitamente, muito obrigado, novamente. Valeu mesmo.

RESPONDER

andrealveslima disse:
24 de outubro de 2017 às 16:34

Legal, Marcos! Fico feliz que tenha funcionado,


finalmente! Qualquer coisa estamos aí..

Abraço!
André Lima

RESPONDER

Ricardo Garcias disse:


26 de outubro de 2017 às 13:00

Mais um excelente artigo.

Sua presteza e dedicação neste espaço são de valor imensurável.


Mais uma vez, parabéns pelo trabalho.
Daqui pra frente, tentarei acompanhar todos.

Grande abraço André!


Sucesso!

RESPONDER

andrealveslima disse:
27 de outubro de 2017 às 5:26

Olá Ricardo, muito obrigado pelo comentário e pelo elogio! :)

Se eu puder ajudar com alguma dúvida, é só entrar em contato..

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 25/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Abraço!
André Lima

RESPONDER

Michael Rafael Rodrigues Silva disse:


30 de outubro de 2017 às 19:19

Boa tarde André!

Parabéns pelo artigo! Simples, rápido e prático.

Fiz o teste com o LocaSMS, aqui na empresa, temos uma aplicação de


terceiros que consome este serviço, ai aproveitei e usei o mesmo usuário e
senha da aplicação, já tem alguns minutos que testei e não recebi o SMS
no meu celular (talvez tenha algum delay ou algo assim), vou esperar mais
um pouco. Quero saber se tem como disparar ele automaticamente, tipo,
sempre que determinado registro for incluído numa tabela ele disparar o
SMS (algo como uma webservice).

Sou novo em programação, e os seus artigos motivam a querer aprender


mais.

RESPONDER

andrealveslima disse:
31 de outubro de 2017 às 12:45

Olá novamente, Michael!

E aí, recebeu o SMS que você enviou? Ou não funcionou no final


das contas?

Quanto ao envio automático, eu escreveria um windows service que


ficaria monitorando essa tabela e, assim que um novo registro fosse
incluído, esse serviço mandaria o SMS e marcaria esse registro
como “processado”..

Você tem experiência com windows services? Esse tema está na


minha lista, mas não sei quando vou conseguir escrever sobre isso..
Enquanto isso, recomendo estes links:

Criando um Windows Service

Criando um Serviço do Windows (Windows Service)

Abraço!
André Lima

RESPONDER

Michael Rafael Rodrigues Silva disse:


31 de outubro de 2017 às 12:49

Bom dia André!

Não recebi o SMS.


Obrigado pelos links do Windows Services, vou dar uma
olhada quando chegar em casa.

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 26/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Pode me mandar o projeto do SMS? Talvez eu tenha feito


algo errado.

RESPONDER

andrealveslima disse:
31 de outubro de 2017 às 13:03

Olá Michael!

Estranho hein.. Enfim, enviei o link para baixar os


projetos de exemplo no seu e-mail..

Abraço!
André Lima

RESPONDER

Julia disse:
4 de novembro de 2017 às 6:25

Saudacoes
Estou muito Grato pelo rico conteudo que tens apresentado.

Eu estou a testar de Mozambique, uso modem 3G, porem tenho um erro na


abertura da porta “The Requested Resource is in use.”

Fechei e abri a porta mas ao abrir novamente da o mesmo Error.

Que pode ser? Help?

RESPONDER

andrealveslima disse:
6 de novembro de 2017 às 6:08

Olá Julia, obrigado pelo comentário!

Pois é, outro leitor teve esse mesmo problema (veja o comentário


dele aqui) e as únicas sugestões que eu posso dar nesse caso são:

1) Se o modem tiver um software proprietário da operadora, feche


esse software antes de utilizar a sua aplicação. Portas seriais são
exclusivas e não podem ser utilizadas por mais de um programa ao
mesmo tempo
2) Tente utilizar o exemplo completo do link que eu citei no artigo.
Ele é mais completo e pode ser que funcione.
3) Alguns modelos de modem são bloqueados para que funcionem
somente com o software da operadora. Tente utilizar outro modem
de outra operadora, se possível

Abraço!
André Lima

RESPONDER

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 27/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

blacksilver02 disse:
11 de dezembro de 2017 às 16:09

ola julia que tal conseguiste? tambem preciso de ajuda!

RESPONDER

Andre Lucas Silva Freires disse:


13 de dezembro de 2017 às 14:24

Olá André Lima, no meu caso utilizei o locaSMS, e recebi uma mensagem
de NOME DA CAMPANHA INVALIDA, percebi, através dos manuais do
locaSMS que seria o campo Subject(string) do objeto rSMS.
enviei o sms nessa manhã, e já faz quase uma hora!
Até agora não recebi o SMS mas vou aguardar ainda mais. Obrigado

RESPONDER

andrealveslima disse:
13 de dezembro de 2017 às 22:12

Olá André!

Que coisa hein.. Você chegou a assinar o serviço ou está utilizando


o pacote de mensagens de teste? Infelizmente, como mencionei no
artigo, eu não consegui testar o LocaSMS porque não aceitava o
meu número de telefone na hora de criar a conta.. Já tentou entrar
em contato com o suporte deles?

Abraço!
André Lima

RESPONDER

Joaquim Costa disse:


8 de fevereiro de 2018 às 3:35

gostei do post, muito interessante. Na verdade é mesmo o que eu preciso.


Agora s[o uma questão no 1 método o post enviado pelo Elton Rodrigo
dos Santos, de onde vem está variável ‘receiveNow’, porque no meu
projecto está a dar erro. E não vejo nenhuma declaração da mesma.

RESPONDER

andrealveslima disse:
9 de fevereiro de 2018 às 15:16

Olá Joaquim!

Realmente ficou de fora a declaração dessa variável.. Tente colocar


a declaração no nível da classe onde você irá colocar esses
métodos.. A declaração seria um simples:

1 AutoResetEvent receiveNow = null;

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 28/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Abraço!
André Lima

RESPONDER

Rafael Rotti disse:


28 de março de 2018 às 19:54

Boa Tarde meu caro tudo bem?

Gostei do Artigo muito bom, parabéns novamente.

Pelo que apresentou é possível enviar SMS através de uma lista de


Números de Celulares salvos em um BD? Teria que implementar algo
diferente no código apresentado?

Grato.

RESPONDER

andrealveslima disse:
29 de março de 2018 às 5:58

Olá Rafael, muito obrigado pelo comentário!

O código que eu apresentei no artigo serve para mandar um único


SMS por vez.. Para mandar mensagens para uma lista de números,
você só precisa implementar essa parte do código.. Você teria que
pegar a lista de números do banco e fazer um foreach, enviando um
SMS por vez.. O resto fica igual..

Entendeu a ideia?

Abraço!
André Lima

RESPONDER

Rafael Rotti disse:


7 de abril de 2018 às 17:04

Bom Dia, meu caro!

Obrigado pelo direcionamento, entendi sim, quando for fazer


já sei o caminho a seguir.

Grato.

RESPONDER

andrealveslima disse:
9 de abril de 2018 às 6:28

Beleza, Rafael.. Qualquer coisa é só entrar em contato


novamente..

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 29/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Abraço!
André Lima

RESPONDER

José Venâncio Vicente Natal disse:


29 de março de 2018 às 23:22

Possas, a muito tempo que procurava por esta solução de envio de sms
pelo modem, eu vivo em Angola o comercio electrónico e pagamentos on-
line aqui ainda esta no começo, acredito que o envio pelo modem é menos
custoso, até porque tirando o envio por terceiros como a twilo, só achei
uma que falava de envio pela placa arduino gms uno, que é programada
em c, contudo vou testar a do modem gsm, e passarei aqui para dar
testemunho, obrigado pelo poste, André, espero que continues a partilhar o
teu conhecimento, partilhar é exercitar e aperfeiçoar o que já se sabe.
valeu

RESPONDER

andrealveslima disse:
30 de março de 2018 às 10:11

Muito obrigado, José! Depois volta aqui então e avisa se funcionou


direitinho..

Abraço!
André Lima

RESPONDER

José Venâncio Vicente Natal disse:


30 de março de 2018 às 15:28

Olá André, olha o seu código, funcionou muito bem, tal que estou a
implementa-lo num sistema de gestão de escolar, para envio de sms
colectivo para encarregados e estudantes, como notificações de inicio de
pagamento, reuniões até onde a mente pensar, cruzando a sua
funcionalidade com dados da bd, dá para fazer uma revolução, obrigado,
olha estou a usa-lo com um modem ZTE da rede GSM, usando a operadora
UNITEL, cá de angola, outra coisa, agradecia possível criares uma
implementação no código para não ser necessário indicar a porta COM a
usar, ou seja pelo nome do dispositivo o sistema seria capaz de identificar
a porta a usar, no envio, pensando na possibilidade de alguém remover o
modem e a porta declarada no código passar para outro dispositivo.
contudo meu muito obrigado vc é 10..

RESPONDER

andrealveslima disse:
3 de abril de 2018 às 8:56

Olá José, muito obrigado pelo retorno!

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 30/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

Que bom que o código funcionou na sua aplicação.. Fico feliz por
ter conseguido ajudar.. :)

Quanto à sua dúvida, veja se o código apresentado nesta thread do


StackOverflow te ajuda em algo:

Get the device name connected to the serial port

Teoricamente, o foreach apresentado nesse link deve listar todas as


portas COM, inclusive os nomes dos dispositivos que estão
conectados nelas.. Talvez com isso você consiga deduzir qual é o
número da porta COM que a sua aplicação deve utilizar..

Abraço!
André Lima

RESPONDER

Lério Reis Sindane disse:


9 de abril de 2018 às 7:53

Excelente
Estou com uma duvida.
Para o envio de sms com modem
Como posso saber qual é
port.PortName = “COM5”;

RESPONDER

andrealveslima disse:
10 de abril de 2018 às 9:39

Olá Lério!

Isso depende do modem.. Normalmente o software que vem junto


com o modem tem a opção de configurar a porta que você quer
utilizar.. Essa informação costuma estar disponível nas
propriedades do modem dentro do gerenciador de dispositivos..
Parecido com o que é indicado neste link:

How To Check The COM Port Of Your Modem

Abraço!
André Lima

RESPONDER

lerio.reis disse:
11 de abril de 2018 às 16:26

Estimado Andre

Agradecido pela Dica!

Tem como ler o COM”X”

Do modem que esta ligado no meu computador automático!

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 31/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima
RESPONDER

andrealveslima disse:
13 de abril de 2018 às 5:44

Olá Lério!

Automaticamente acho um pouco difícil.. Não são somente modems


SMS que utilizam a porta serial para se comunicar.. Ou seja, pode
ser que você tenha mais de um dispositivo utilizando portas COM
diferentes no seu computador, aí vai ser impossível de saber
automaticamente qual dispositivo é o modem..

Mas, enfim, acho que o máximo que você pode fazer de modo
automático é verificar todas as portas seriais para ver se tem algum
dispositivo conectado.. Se só tiver um, aí tem uma grande chance
de ser o modem.. Para listar os dispositivos contectados em cada
uma das portas seriais, você pode tentar utilizar o código
apresentado nesta thread do StackOverflow:

Get the device name connected to the serial port

Abraço!
André Lima

RESPONDER

Igor Xavier disse:


13 de abril de 2018 às 16:55

Olá André.

Através deste post consegui implementar uma ideia no meu projeto de


curso técnico, sou muito agradecido por pessoas como você. Mesmo não
sendo um post muito recente, você continua respondendo os comentários,
é uma coisa meio rara de se ver.
Enfim, quero lhe agradecer por trazer este conteúdo. Sucesso !

RESPONDER

andrealveslima disse:
16 de abril de 2018 às 5:32

Olá Igor, muito obrigado pelo comentário e pelos elogios!

Fico feliz por ter conseguido ajudar no seu projeto através da


minha publicação.. :)

Qualquer dificuldade, é só entrar em contato..

Abraço!
André Lima

RESPONDER

DENNY ERIKSON disse:


www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 32/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima
6 de junho de 2018 às 18:29

Olá André,
comigo funcionou os dois códigos em C#, com isso obtive sucesso com a
solução de um sistema onde trabalho. Muito bom o conteúdo tem sido
referência em meus estudos,
sempre respondendo e ajudando agradeço desde já a atenção.
Abraço.

RESPONDER

andrealveslima disse:
13 de junho de 2018 às 16:49

Olá Denny! Muito obrigado pelo feedback! Fico feliz que o artigo
tenha te ajudado.. :)

Abraço!
André Lima

RESPONDER

Fernando disse:
10 de setembro de 2018 às 20:01

Oi André, belo post,..

Tens alguma dica sobre envio de sms automatico pelo Xamarin Forms
Android?
É possível sem abrir uma tela intermediária,…

Obrigado…

RESPONDER

andrealveslima disse:
27 de setembro de 2018 às 15:29

Olá Fernando!

Não tenho esse tipo de experiência, mas pesquisando aqui eu


encontrei este link:

SmsManager

Será que esse SmsManager não é o que você está procurando?

Abraço!
André Lima

RESPONDER

Deixe uma resposta

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 33/34
18/01/23, 15:34 Enviando SMS com C# e VB.NET - André Alves de Lima

O seu endereço de e-mail não será publicado. Campos obrigatórios são


marcados com *
Comentário

Nome *

E-mail *

Site

PUBLICAR COMENTÁRIO

Notifique-me sobre
novos comentários
por e-mail.
Notifique-me sobre
novas publicações
por e-mail.

Início Software Development And more Inscreva-se Sobre

www.andrealveslima.com.br/blog/index.php/2017/10/18/enviando-sms-com-c-e-vb-net/ 34/34

Você também pode gostar