Primera Parte
Para muchas aplicaciones que podemos llegar a realizar,
el envío de un correo electrónico
a través del servicio de SMS, nos puede ser
muy útil. Pero esta utilidad esta limitada
por características propias del servicio
y del sistema. En lo referente al servicio, la cantidad
de datos que vamos a transmitir no deben superan
los 160 caracteres (a estos hay que restarles el
encabezado, como vimos en anteriormente), caso contrario
va ser necesario enviar mas de un SMS. Por otro
lado en lo referente al sistema, no tenemos un 100%
de seguridad de que el mensaje llegue a destino.
Entonces, cuando alguno de estas limitaciones nos
afectan, una solución es implementar el protocolo
SMTP sobre el stack TCP/IP del modulo.
Introducción SMTP
SMTP se basa en el modelo cliente-servidor,
donde un cliente envía un mensaje a uno o
varios receptores. En el conjunto de protocolos
TCP/IP, el SMTP va por encima del TCP, usando normalmente
el puerto 25 en el servidor para establecer la conexión.
Como el objetivo del articulo no es explicar el
protocolo SMTP, sino como implementarlo sobre los
módulos GSM, a continuación dejamos
un par de direcciones webs, donde podrá interiorizarse
mas en el tema.
http://es.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
http://es.wikipedia.org/wiki/Base_64
Aplicación:
Para poder realizar esta aplicación
hemos abierto una casilla de correo en Yahoo,
cuyo nombre de usuario es pruebasmtp
(pruebasmtp@yahoo.com.ar) y contraseña smtpprueba.
Como la función de esta casilla es simplemente
para poder ilustrar el ejemplo, se debe tener la
precaución al momento de utilizarla que dicha
casilla este activada, ya que si esta no se utiliza
por un periodo el servidor de yahoo la da de baja
automáticamente.
Descripción del ejemplo
En el ejemplo que tenemos a continuación,
usaremos el usuario y la contraseña de la
cuenta que hemos abierto en yahoo
para utilizar su servidor de SMTP y enviar correos
electrónicos a través de este. Luego
de la habitual configuración inicial que
realizamos, chequeamos que estemos registrados,
abrimos una conexión con el gateway de la
prestadora y abrimos el puerto 25 del servidor SMTP
de yahoo (cuya dirección es 209.191.85.254).
Como el servidor soporta que le envíe todos
los comandos juntos, y esto facilita nuestra tarea,
lo que haremos es cargar en el buffer del modulo
todos los comandos y luego los enviaremos. El servidor
recibirá todos los comandos juntos pero los
ira ejecutando de a uno. A continuación se
hace una pequeña descripción de los
comandos usados:
• HELO, para abrir una sesión con el
servidor.
• AUTH LOGIN, para solicitar ingreso de usuario
y contraseña. *1
• MAIL FROM, para indicar quien envía
el mensaje.
• RCPT TO, para indicar el destinatario del
mensaje.
• DATA, para indicar el comienzo del mensaje,
éste finalizará cuando haya una línea
únicamente con un punto.*2
• Subject:, debe estar luego de DATA y es
para indicar el asunto del correo.
• From:, debe estar luego de DATA y es para
que figure en el correo quien es el remitente.
• QUIT, para cerrar la sesión.
*1: Luego de enviar este comando el servidor responderá
el siguiente mensaje VXNlcm5hbWU6,
el cual esta codificado el base 64 y significa Username:,
a lo que hay que responder el usuario codificado
en base 64, en nuestro caso pruebasmtp (cHJ1ZWJhc210cA==)
a continuación nos enviara el siguiente mensaje
UGFzc3dvcmQ6, el cual significa
Password:, al lo que hay que responder nuestro password
codigificado en base 64 , para nuestro caso es smtpprueba
(c210cHBydWViYQ==). Si el servidor que utilizamos
no tiene implementado seguridad estos pasos no son
necesarios.
*2 El fin de un mensaje se indica con la siguiente
secuencia, <CR><LF>.<CR><LF>
Ejemplo
1-ATE0
2- ATE0 - OK
3- AT+CMEE=2
4- OK
5- AT+CREG?
6- +CREG: 000,001 - OK
7- AT+MIPCALL=1,"internet.gprs.unifon.com.ar","wap","wap"
8- OK
9- +MIPCALL: 172.17.121.9
10- AT+MIPOPEN=1,25,"209.191.85.254",25,0
11- OK
12- +MIPOPEN: 1,1
13- +MIPRTCP: 1,0,32323020736D74703130352E6D61696C2E6D75642E796168
6F6F2E636F6D2045534D54500D0A
// 220 smtp105.mail.mud.yahoo.com ESMTP
14- AT+MIPSEND=1,"68656C6F0D0A61757468206C6F67696E0D0A63484A315A5
74A686332313063413D3D0D0A"
15- +MIPSEND: 1,0,1336 - OK
16- AT+MIPSEND=1,"63323130634842796457566959513D3D0D0A"
17- +MIPSEND: 1,0,1318 - OK
18- AT+MIPSEND=1,"4D41494C2046524F4D3A707275656261736D747040796168
6F6F2E636F6D2E61720D0A"
19- +MIPSEND: 1,0,1283 - OK
20- AT+MIPSEND=1,"5243505420544F3A697A40656C656374726F636F6D706F6E
656E7465732E636F6D0D0A"
21- +MIPSEND: 1,0,1248 - OK
22- AT+MIPSEND=1,"444154410D0A5375626A6563743A205052554542410D0A"
23- +MIPSEND: 1,0,1225 - OK
24- AT+MIPSEND=1,"46726F6D3A20707275656261736D7470407961686F6F2E63
6F6D2E61720D0A0D0A434F5252454F20444520505255454241"
25- +MIPSEND: 1,0,1176 - OK
26- AT+MIPSEND=1,"0D0A2E0D0A515549540D0A"
27- +MIPSEND: 1,0,1165 - OK
28- AT+MIPPUSH=1
29- +MIPPUSH: 1,0 - OK
30- +MIPRTCP: 1,0,32353020736D74703130362E6D61696C2E6D75642E7961686F6F2E636F6D0D0A
+MIPRTCP: 1,73,3333342056584E6C636D3568625755360D0A333334205547467A63336476636D5
1360D0A323335206F6B2C20676F206168656164202823322E302E30290D0A323530206F6B0D0A32
3530206F6B0D0A33
+MIPRTCP: 1,0,353420676F2061686561640D0A323530206F6B20313137393834393333382071702
035333439330D0A32323120736D74703130362E6D61696C2E6D75642E7961686F6F2E636F6D0D0A
//250 smtp106.mail.mud.yahoo.com
//334 VXNlcm5hbWU6
//334 UGFzc3dvcmQ6
//235 ok, go ahead (#2.0.0)
//250 ok
//250 ok
//354 go ahead
//250 ok 1179849338 qp 53493
//221 smtp106.mail.mud.yahoo.com
31- +MIPSTAT: 1,1
Continuará ............
Ing. Ignacio José Zaradnik
FAE Motorola Wireless Division
E-mail: iz@electrocomponentes.com
|