Spanish [B4A] [Tutorial] Ejemplo enviar Email con SMTP

JorgeMC

Member
Licensed User
Longtime User
Buenas tardes, hoy os traigo un ejemplo de como poder enviar un Email desde nuestro programa. El ejemplo de hoy es con una cuenta que configuremos nosotros, aun no he investigado como hacerlo desde la cuenta de GMail que tenga el movil y no se si es posible hacerlo de manera automática como en el ejemplo. Al curro:

Información Oficial sobre el objeto SMTP: http://www.b4x.com/android/help/net.html#smtp

Para poder realizar el ejemplo, debemos de utilizar la librería llamada "Net library - Android FTP, SMTP and POP3", cuya última versión 1.20 la podeis descargar desde aqui:

Descargar Librería Net library - Android FTP, SMTP and POP3 v1.20

Para añadir o actualizar una librería tenéis este Tutorial:

[B4A] [Tutorial] Añadiendo / Actualizando Librerías a Basic4Android

Una vez tengamos la librería, la seleccionaremos desde la pestaña Libs:


8.png



Donde activaremos la librería llamada Net, con esto ya estamos listos para poder enviar desde nuestro programa un Email. Vamos con el código ahora:

B4X:
Sub Process_Globals
    Dim SMTP As SMTP
End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
    If FirstTime Then
        SMTP.Initialize("smtp.gmail.com", 465, "[email protected]", "nuestropassword", "SMTP")
        SMTP.UseSSL = True 'Esta linea la ponemos ya que Gmail requiere SSL
    End If
    SMTP.To.Add("[email protected]")
    SMTP.Subject = "Asunto del Email"
    SMTP.Body = "Cuerpo del mensaje."
    SMTP.AddAttachment(File.DirRootExternal, "elarchivoquequeremosadjuntar")
    SMTP.Send
End Sub

Sub SMTP_MessageSent(Success As Boolean)
    Log(Success)
    If Success Then
        ToastMessageShow("Mensaje enviado correctamente.", True)
    Else
        ToastMessageShow("Error al enviar mensaje.", True)
        Log(LastException.Message)
    End If
End Sub

Cambiando los datos y poniendo los nuestros, ya estaríamos listos para enviar correo desde nuestro programa.

Para el tema de adjuntar archivos, os pongo el enlace al Tutorial de Almacenamiento en Android, para saber las rutas de los mismos:

[B4A] [Tutorial] Almacenamiento en Android

Cualquier duda que tengáis ya sabéis, preguntar por aquí sobre este tema.

Tutorial realizado por JorgeMC para Historias de un Cazique y Basic4android (Basic for Android)
 
Last edited:

JorgeMC

Member
Licensed User
Longtime User
Ejemplo utilizando nuestra cuenta de Hotmail / Live

Mismo ejemplo del Tutorial pero utilizando nuestra cuenta de Hotmail / Live:

B4X:
Sub Process_Globals
    Dim SMTP As SMTP
End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
    If FirstTime Then
        SMTP.Initialize("smtp.live.com", 587, "Nuestra cuenta de correo de Hotmail (Incluyendo la @hotmail.com/.es o @live.com , etc.)", "nuestropassword", "SMTP")
        SMTP.UseSSL = True 'Esta linea la ponemos ya que Hotmail / Live requiere SSL
    End If
    SMTP.To.Add("[email protected]")
    SMTP.Subject = "Asunto del Email"
    SMTP.Body = "Cuerpo del mensaje."
    SMTP.AddAttachment(File.DirRootExternal, "elarchivoquequeremosadjuntar")
    SMTP.Send
End Sub

Sub SMTP_MessageSent(Success As Boolean)
    Log(Success)
    If Success Then
        ToastMessageShow("Mensaje enviado correctamente.", True)
    Else
        ToastMessageShow("Error al enviar mensaje.", True)
        Log(LastException.Message)
    End If
End Sub
 

JorgeMC

Member
Licensed User
Longtime User
Ejemplo utilizando nuestra cuenta de Yahoo

Mismo ejemplo del Tutorial pero utilizando nuestra cuenta de Yahoo:

B4X:
Sub Process_Globals
    Dim SMTP As SMTP
End Sub

Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
    If FirstTime Then
        SMTP.Initialize("smtp.mail.yahoo.com", 587, "Nuestra cuenta de correo de Yahoo (Incluyendo la @yahoo.es/com)", "nuestropassword", "SMTP")
    End If
    SMTP.To.Add("[email protected]")
    SMTP.Subject = "Asunto del Email"
    SMTP.Body = "Cuerpo del mensaje."
    SMTP.AddAttachment(File.DirRootExternal, "elarchivoquequeremosadjuntar")
    SMTP.Send
End Sub

Sub SMTP_MessageSent(Success As Boolean)
    Log(Success)
    If Success Then
        ToastMessageShow("Mensaje enviado correctamente.", True)
    Else
        ToastMessageShow("Error al enviar mensaje.", True)
        Log(LastException.Message)
    End If
End Sub
 

jlbleiva

New Member
No hace envio mail a cuenta de hotmail

No entiendo, me manda los correos, pero si le pongo que lo mande un correo de hotmail, no lo hace, ni de gmail tampoco, por que??? Gracias
 

josejad

Expert
Licensed User
Longtime User
Hola Jose:

Este hilo tiene más de 10 años. Muchas cosas han cambiado. Crea uno nuevo, pon tu código o mejor, sube un proyecto, y te echamos una mano
 
Last edited:
Hola Jose:

Este hilo tiene más de 0 años. Muchas cosas han cambiado. Crea uno nuevo, pon tu código o mejor, sube un proyecto, y te echamos una mano
Hola Jose, Gracias por tomarte el tiempo de responder y tratar de ayudarme.

Soy nuevo en B4A, soy programador de VB6. Por lo pronto no tengo nada desarrollado, simplemente estoy haciendo pruebas con diferentes códigos y estoy probando cosas, es por eso que no tengo código para subir.

La idea es desarrollar una app, para el negocio donde trabajo, para que los clientes puedan hacer sus pedidos o comprar por la app. Es un negocio de venta de productos para la construcción, unos 20 productos aprox. Ya logre hacer la interface gráfica, y estaba probando como enviar el pedido a una casilla de mail. Mi idea es que los clientes selecciones los productos, pongan la cantidad de artículos y esto se envía a un correo electrónico de la empresa y ahí un operador se encargara de el proceso de venta.

Estoy probando diferentes códigos que encontré por la web para enviar un correo electrónico pero estoy estancado ahí… no logro que salga nada.

Si me pueden ayudar con este punto u orientarme con otra solución para recibir el pedido, les agradecería.

Saludos
 

josejad

Expert
Licensed User
Longtime User
Hola de nuevo José Emanuel:

No hay de qué, para eso estamos.
Por favor, crea un hilo nuevo en el que podamos ayudarte y/o darte ideas, que no sea dentro de este hilo para mantener la claridad del foro.
Puedes, por ejemplo, crear un nuevo hilo para ver tu problema enviando el correo, poniendo el ejemplo que has probado y el error que recibes; y otro hilo para que te aportemos ideas para otras soluciones.

saludos,
 

josejad

Expert
Licensed User
Longtime User
La solución de este hilo dejará de funcionar en breve ya que requiere activar en Google el uso de apps de terceros menos seguras. Esto ya no estará permitido desde hoy 30/05/2022. Puedes verlo en este enlace.

Ahora es recomendable solicitar al usuario permiso una sola vez para que nuestra APP envíe correos a través de su cuenta de correo.
Se puede ver cómo hacerlo en este hilo:
 
Top