Spanish Enviar correo pendiente

benji

Active Member
Licensed User
Longtime User
Tengo un dispositivo que cuando realiza una acción, enviara un correo a una dirección determinada, mi tema es, a veces no tendrá conexión para enviar el correo, como dejo pendiente el envio de ese o mas correos hasta que tenga conexión?
 

westingenieria

Active Member
Licensed User
Longtime User
Intenta guardar el correo con todos los datos (para quién, cuerpo, asunto) en una tabla en la BD local. Crea un servicio el cual revise esa tabla periódicamente cuando tengas conexión.. si tiene conexión, lees la tabla "mails" y envías.

Saludos
 

benji

Active Member
Licensed User
Longtime User
OK, lo de la tabla ya se me había ocurrido, como compruebo si el mensaje fue enviado, o en su defecto si tengo conexión?
 

westingenieria

Active Member
Licensed User
Longtime User
En la tabla deja un campo el cual diga "Estado", puedes dejarlo como 1 y 0 o bien "Enviado" / "No Enviado" entonces consultas por los no enviados y los enviados los borras periódicamente... Para revisar si tienes conexión a internet hay varias formas... una de estas formas es llegando a un webservice y esperar respuesta, si tienes respuesta es porque tienes conexión, si no tienes es porque no tienes conexión a este. Por otro lado también puedes ver si tienes 3g activado o Wifi activado utilizando un toogle.

Ejemplo (en un servicio):
B4X:
Sub Process_Globals
      Dim Red As Toggle
End Sub
Sub Service_Create
      Red.Initialize
End Sub

Sub tuFuncion
    If Red.DataConnection OR Red.WiFi Then
                  'Tienes levantado el wifi o el 3G...
    End If
End Sub

Si deseas revisar si tienes conexión te aconsejo lo de un webservice... haces la llamada y esperas la respuesta.

Saludos
 

vampirbcn

Active Member
Licensed User
Longtime User
Aquí tienes otra solución utilizando la libreria net para saber si tienes conexión:

B4X:
Dim sSocket As ServerSocket
If sSocket.IsInitialized = False Then
    sSocket.Initialize(8080, "sSocket")
    sSocket.Close
End If
If sSocket.GetMyIP = "127.0.0.1" Then
    Msgbox("No tiene conexión a internet", "Atención")
    Activity.Finish
End If

Saludos
 

westingenieria

Active Member
Licensed User
Longtime User
Lo que te menciona vampirbcn creo que sería la mejor alternativa. La librería que necesitas para eso no es Net si no más bien Network.

Saludos
 

westingenieria

Active Member
Licensed User
Longtime User
Ojo que esa solución solo te va a servir si utilizas plan de datos de telefonía móvil (3g,lte,etc...) , pero no te funcionará si estás conectado a una red wifi ya que aunque no tengas internet la ip será distinta a 127.0.0.1 debido a que la red siempre te otorgará una ip independientemente si no tienes acceso a internet.

Saludos
 

benji

Active Member
Licensed User
Longtime User
Ese es el problema, ya que la conexión seria mediante wifi, siempre. Como es lo que decias del toggle?
 
Top