SMS ALGUEM AJUDA?
Ola estou enviando o sms através de um modem ate então tudo ok mas quando coloco acentos ae não vai alguém pode me ajudar e também como enviar para mais de um numero
On Error Resume Next
MSComm1.CommPort = Me.Caption
MSComm1.Settings = [Ô]9600,N,8,1[Ô]
MSComm1.Handshaking = comRTS
MSComm1.RTSEnable = True
MSComm1.DTREnable = True
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.InputMode = comInputModeText
MSComm1.InputLen = 0
MSComm1.PortOpen = True
MSComm1.Output = [Ô]AT[Ô] & vbCrLf
MSComm1.Output = [Ô]AT+CMGF=1[Ô] & vbCrLf
MSComm1.Output = [Ô]AT+CMGS=[Ô] & Chr(34) & Trim(Text4.Text & Cmbno.Text) & Chr(34) & vbCrLf
MSComm1.Output = Mid([Ô]Ola! [Ô] & Text1.Text & [Ô] [Ô] & txtSubject.Text & [Ô] [Ô] & txtrastreio.Text, 1, 160) & Chr(26)
MSComm1.PortOpen = False
Sleep 6000
List1.AddItem [Ô] Menssagem Enviada [Ô] & Text1.Text & [Ô] [Ô] & Cmbno.Text & [Ô][Ô]
On Error Resume Next
MSComm1.CommPort = Me.Caption
MSComm1.Settings = [Ô]9600,N,8,1[Ô]
MSComm1.Handshaking = comRTS
MSComm1.RTSEnable = True
MSComm1.DTREnable = True
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.InputMode = comInputModeText
MSComm1.InputLen = 0
MSComm1.PortOpen = True
MSComm1.Output = [Ô]AT[Ô] & vbCrLf
MSComm1.Output = [Ô]AT+CMGF=1[Ô] & vbCrLf
MSComm1.Output = [Ô]AT+CMGS=[Ô] & Chr(34) & Trim(Text4.Text & Cmbno.Text) & Chr(34) & vbCrLf
MSComm1.Output = Mid([Ô]Ola! [Ô] & Text1.Text & [Ô] [Ô] & txtSubject.Text & [Ô] [Ô] & txtrastreio.Text, 1, 160) & Chr(26)
MSComm1.PortOpen = False
Sleep 6000
List1.AddItem [Ô] Menssagem Enviada [Ô] & Text1.Text & [Ô] [Ô] & Cmbno.Text & [Ô][Ô]
Se nao me engano sms nao aceita acentos ou posso estar enganado, para fazer varios envios faca um loop, em uma lista indo de linha em linha...
Evite usar acentuação, cada carácter com acento consome mais de 1 [Ô]dÃgito[Ô] no texto, por exemplo, se enviar André conta com 7 digitos agora se enviar Andre vai contar os 5 dÃgitos mesmo.
Outro detalhe se for fazer um loop para enviar vários SMS você vai precisar dar um tempo acada ciclo de envio, por exemplo: No meu sistema fiz um monitor que enviar 1 SMS a cada 2 segundos depois que for uma leva de 5 SMS eu dou um intervalo de 30 segundos ou mais. Deu para entender? Envio 5 entre cada SMS uma pausa de 2 segundos e a cada 5 SMS uma pausa maior de 30 segundos. é necessário fazer isso senão o número do Chip da operadora cai na BlackList, que é uma lista de SPAMS utilizado pelas operadoras para detectar SMS de lote, os caras só liberam envio em massa de 1000 SMS por vez por aqueles sistemas pagos que são registrados pelas operadoras em que cada SMS sai 25 centavos.
Se tiver mais alguma duvida é só postar para nós.
Outra dica utiliza o HyperTerminal para testar os comandos e envios depois você implementa no seu codigo fica mais facil na minha opinião.
Abs.
Outro detalhe se for fazer um loop para enviar vários SMS você vai precisar dar um tempo acada ciclo de envio, por exemplo: No meu sistema fiz um monitor que enviar 1 SMS a cada 2 segundos depois que for uma leva de 5 SMS eu dou um intervalo de 30 segundos ou mais. Deu para entender? Envio 5 entre cada SMS uma pausa de 2 segundos e a cada 5 SMS uma pausa maior de 30 segundos. é necessário fazer isso senão o número do Chip da operadora cai na BlackList, que é uma lista de SPAMS utilizado pelas operadoras para detectar SMS de lote, os caras só liberam envio em massa de 1000 SMS por vez por aqueles sistemas pagos que são registrados pelas operadoras em que cada SMS sai 25 centavos.
Se tiver mais alguma duvida é só postar para nós.
Outra dica utiliza o HyperTerminal para testar os comandos e envios depois você implementa no seu codigo fica mais facil na minha opinião.
Abs.
Ola vlw vcs por ajudarem aqui, acabei optando por texto sem acentuação msm o loop deu certo aqui mas acabei que fiz tudo em 6 segundos por sms
me da um envio de 600 por hora são mil a cada semana 4 totalizando o mes inteiro mas acho que vai dar certo... vlwwww
me da um envio de 600 por hora são mil a cada semana 4 totalizando o mes inteiro mas acho que vai dar certo... vlwwww
Aqui vai a função de envio que eu uso.
Na linha que tem --> [Ô]1799[Ô] & Mid(sFone, 3, Len(sFone) - 2) <-- você muda para o seus numeros de telefones mas o formato tem que ser sempre DDD + numero, exemplo: 17981239444
[ô]=================================================================
Public Function EnviarSmsDireto(ByRef oMsCom As MSComm, ByVal sFone As String, _
ByVal sMensagem As String, ByRef oLBL As Label) As Boolean
Dim viA As Integer
Dim vsRetorno As String
Dim vsRet() As String
Dim vsOk As String
On Error GoTo Conserta
With oMsCom
.CommPort = gsCom
.Settings = gsString
.InputLen = 0
.Handshaking = comNone
.InputMode = comInputModeText
.PortOpen = True
DoEvents
.Output = [Ô]AT+CMGS = [Ô] & Chr(34) & [Ô]1799[Ô] & Mid(sFone, 3, Len(sFone) - 2) & Chr(34) & Chr(13) & Chr(10)
.Output = sMensagem & Chr(26)
Sleep 5000
vsRetorno = .Input
vsRet = Split(vsRetorno, vbCrLf)
For viA = LBound(vsRet) To UBound(vsRet)
If Trim(vsRet(viA)) = [Ô]OK[Ô] Then
psModemRetorno = [Ô]OK[Ô]
Exit For
Else
psModemRetorno = [Ô]N[Ô]
End If
Next viA
.PortOpen = False
End With
EnviarSmsDireto = True
Exit Function
Conserta:
MsgBox Err.Number & [Ô] - [Ô] & Err.Description, [Ô]Erro...SMS...(Fucn.EnviarSmsDireto)[Ô] & [Ô] [Ô] & sFone
End Function
[ô]================================================
Na linha que tem --> [Ô]1799[Ô] & Mid(sFone, 3, Len(sFone) - 2) <-- você muda para o seus numeros de telefones mas o formato tem que ser sempre DDD + numero, exemplo: 17981239444
[ô]=================================================================
Public Function EnviarSmsDireto(ByRef oMsCom As MSComm, ByVal sFone As String, _
ByVal sMensagem As String, ByRef oLBL As Label) As Boolean
Dim viA As Integer
Dim vsRetorno As String
Dim vsRet() As String
Dim vsOk As String
On Error GoTo Conserta
With oMsCom
.CommPort = gsCom
.Settings = gsString
.InputLen = 0
.Handshaking = comNone
.InputMode = comInputModeText
.PortOpen = True
DoEvents
.Output = [Ô]AT+CMGS = [Ô] & Chr(34) & [Ô]1799[Ô] & Mid(sFone, 3, Len(sFone) - 2) & Chr(34) & Chr(13) & Chr(10)
.Output = sMensagem & Chr(26)
Sleep 5000
vsRetorno = .Input
vsRet = Split(vsRetorno, vbCrLf)
For viA = LBound(vsRet) To UBound(vsRet)
If Trim(vsRet(viA)) = [Ô]OK[Ô] Then
psModemRetorno = [Ô]OK[Ô]
Exit For
Else
psModemRetorno = [Ô]N[Ô]
End If
Next viA
.PortOpen = False
End With
EnviarSmsDireto = True
Exit Function
Conserta:
MsgBox Err.Number & [Ô] - [Ô] & Err.Description, [Ô]Erro...SMS...(Fucn.EnviarSmsDireto)[Ô] & [Ô] [Ô] & sFone
End Function
[ô]================================================
Tópico encerrado , respostas não são mais permitidas