ENGLISH
|
ESPAÑOL
::: SMTP sobre GSM/GPRS :::
 

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

 
Solicite mayor información en: ingenieria@electrocomponentes.com
 
Solís 225 / 227 / 229 (1079) - Buenos Aires, Argentina. - Tel: (54 11) 4375-3366 Fax: (54 11) 4325-8076
© Electrocomponentes S.A. - Todos los derechos reservados