Como Enviar un Correo en Android (Java)
Demo Github
Los Correos o Emails son una forma importante de comunicarse, sobre todo a nivel empresarial, si bien existen muchas aplicaciones de mensajería como WhatsApp o Telegram que permite la comunicación entre usuarios, los correos siguen siendo una herramienta que no deja de pasar desapercibida, si revisas tu bandeja de correo, a diario o cada cierta frecuencia puedes ver que recibes múltiples correos con promociones, noticias, etc. En este Post te voy a enseñar como enviar un correo desde Android.
Antes de continuar con este Post te recomiendo leer los artículos:
Si ya conoces sobre Java y Android, puedes continuar con este Post, no hay problema.
Empezaré creando la interface y luego el código Java para la Aplicación.
Lo primero que debes hacer es crear un Proyecto nuevo en Android Studio, puedes seguir el tutorial: Que es Android y tu Primera aplicación Hola Mundo en donde explico los pasos para hacerlo.
Interface UI
Abro el archivo activity_main.xml en donde agregaré con los elementos para la interface de la aplicación.
Para el formulario del envió de correos voy a agregar 4 elementos: Campo del Correo, Asunto y cuerpo del Mensaje. Todos los voy a colocar sobre un RelativeLayout.
1 2 3 4 5 6 7 8 9 10 11 12 |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" > <!-- Acá los elementos de mi formulario --> </RelativeLayout> |
Para mantener una estructura más flexible, voy a separa todos los elementos con varios LinearLayout, primero agrego el titulo con el texto Enviar Correo el cual esta alojado en mi archivo strings.xml, este archivo lo crearé más abajo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/txt_home" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/texto_ec" android:textColor="#000000" android:textSize="24dp" android:layout_marginTop="30dp" /> </LinearLayout> |
Ahora voy a crear mi campo Correo con el texto Enviar a: en donde se debe escribir el correo del usuario al cual se le desea enviar el mensaje.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:orientation="vertical"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/txt_correo" android:textColor="#007bff" android:text="@string/texto_correo" android:textSize="17dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <EditText android:id="@+id/caja_correo" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Ejemplo: correo@correo.com" /> </LinearLayout> </LinearLayout> |
Paso seguido voy a crear el campo en donde el usuario debe escribir el Asunto para el mensaje
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="190dp" android:orientation="vertical"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/txt_asunto" android:textColor="#007bff" android:text="@string/texto_asunto" android:textSize="17dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/caja_asunto" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Feliz Cumpleaños"/> </LinearLayout> </LinearLayout> |
Luego agrego el campo para el Mensaje.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="285dp" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/txt_mensaje" android:textColor="#007bff" android:text="@string/texto_mensaje" android:textSize="17dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/caja_mensaje" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Feliz Cumpleaños" android:inputType="textMultiLine" android:height="100dp"/> </LinearLayout> </LinearLayout> |
Por ultimo agrego un botón con el texto Enviar, este botón me servirá para enviar el correo una vez llenado los campos del formulario.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="430dp"> <Button android:id="@+id/btn_enviar" android:text="@string/texto_btn_enviar" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> |
El texto de los labels y del botón Enviar los he colocado en mi archivo strings.xml para mantener un orden
Strings
Abro el archivo strings.xml que se encuentra en app > res > values > strings.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/app ├── /manifests ├── /java ├── /java (generated) ├── /res ├── /drawable ├── /layout ├── /mipmap ├── /values ├── colors.xml ├── dimen.xml ├── strings // Abro este archivo ├── styles.xml ├── /res (generated) /Gradle Scripts |
Y agrego lo siguiente en el archivo strings.xml el contenido con los textos de mi interface.
1 2 3 4 5 6 7 8 9 10 11 |
<resources> <string name="app_name">Mi Aplicación</string> <string name="texto_main">Nube Colectiva</string> <string name="texto_ec">Enviar Correo</string> <string name="texto_correo">Enviar a:</string> <string name="texto_asunto">Asunto:</string> <string name="texto_mensaje">Mensaje:</string> <string name="texto_btn_enviar">Enviar</string> </resources> |
Con esto ya tengo lista la interface de la aplicación:
A continuación, todo el código completo de mi archivo
Ahora voy a crear mi código Java para darle funcionalidad a la interface.
Main Activity (Java)
Abro el archivo MainActivity.java que se encuentra en app > java > com.example.app
1 2 3 4 5 6 7 8 9 10 11 |
/app ├── /manifests ├── /java ├── /com.example.app ├── MainActivity.java // Abro este archivo ├── /java (generated) ├── /res ├── /res (generated) /Gradle Scripts |
Todo lo voy a realizar el el método onCreate que se encuentra en el archivo MainActivity.java
1 2 3 4 5 6 7 |
@Override protected void onCreate(Bundle savedInstanceState) { // Acá el código Java } |
Lo primero que haré es definir los objetos de la interface de la aplicación, estos elementos los defino arriba, antes del método onCreate
1 2 3 4 5 6 7 8 9 10 11 |
// Defino los objetos de la interface Button button; EditText correo, asunto, mensaje; @Override protected void onCreate(Bundle savedInstanceState) { // Acá el código Java } |
Luego obtengo los elementos de la interface.
1 2 3 4 5 6 7 |
// Obtengo los elementos de la interface correo = findViewById(R.id.caja_correo); asunto = findViewById(R.id.caja_asunto); mensaje = findViewById(R.id.caja_mensaje); button = findViewById(R.id.btn_enviar); |
Por ultimo agrego un setOnClickListener para el botón Enviar. En el creo el Intent en donde hago uso del obejto ACTION_SEND de Android y le paso los Strings EXTRA_EMAIL, EXTRA_SUBJETC y EXTRA_TEXT.
Al final lanzo el selector de cliente de correo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// El setOnClickListener del botón Enviar button.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { String enviarcorreo = correo.getText().toString(); String enviarasunto = asunto.getText().toString(); String enviarmensaje = mensaje.getText().toString(); // Defino mi Intent y hago uso del objeto ACTION_SEND Intent intent = new Intent(Intent.ACTION_SEND); // Defino los Strings Email, Asunto y Mensaje con la función putExtra intent.putExtra(Intent.EXTRA_EMAIL, new String[] { enviarcorreo }); intent.putExtra(Intent.EXTRA_SUBJECT, enviarasunto); intent.putExtra(Intent.EXTRA_TEXT, enviarmensaje); // Establezco el tipo de Intent intent.setType("message/rfc822"); // Lanzo el selector de cliente de Correo startActivity( Intent .createChooser(intent, "Elije un cliente de Correo:")); } }); |
Entonces cuando el usuario llena el formulario con los campos Enviar a, Asunto y Mensaje y presiona el botón Enviar, te abre el cliente de Correo que tienes instalado, por ejemplo Gmail, este utiliza los datos ingresados en el formulario y enviamos el correo.
Puedes ver en la imagen del lado derecho el correo que ha sido recibido correctamente.
Con esto tengo terminada mi aplicación y lista para usarse, para entender mejor y ver el resultado de la aplicación, puedes ver la Demo que esta arriba, al inicio de este Tutorial.
Conclusión
En este Tutorial hemos aprendido a conectar una aplicación con el o los clientes de Correo y ha pasarle la información del formulario al cliente de correo que tengamos instalado en nuestro dispositivo, el cliente se encarga de enviar el correo a otro usuario.
Sabiendo esto puedes implementar esta funcionalidad en tus aplicaciones, si así lo requiere.
Nota(s)
- No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.
- Los pasos mencionados en este Post, pueden dejar de existir, continuar o ser modificados, esto no depende de mi, sino de los Desarrolladores que dan Soporte a Android SO, Android Studio y Java.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenido.
- Android
- 18-01-2020
- 18-01-2020
- Crear un Post - Eventos Devs - Foro