Blog para desarrollo de aplicaciones en Android, aprende paso a paso como crear aplicaciones.

Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación para mostrarle publicidad personalizada y realizar análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. OK Más información | Y más

Como enviar mensajes GMAIL en Android

Android Studio - Send Email GMAIL


Hola amigos en esta ocasion les enseñare como enviar correos desde su aplicación Android.

Primero nos dirigiremos a nuestra cuenta de GMAIL. para habilitar la opción de envió de correos desde aplicaciones externas.

Crear proyecto Android Studio

Vamos a crear un proyecto. (Aquí).



Teniendo listo nuestro proyecto podemos comenzar a desarrollar nuestra aplicación.

Lo primero que haremos sera crear el diseño de nuestro Activity.

Antes de todo crearemos un diseño para nuestro Activity, de la siguiente forma.

Los agregaremos a nuestro directorio Drawable.
stylebtn.xml sera el diseño para nuestro Button.


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
 <corners android:radius="5dip" />

 <stroke
 android:width="1px"
 android:color="@color/btn2" />

 <gradient
 android:startColor="@color/btn1"
 android:endColor="@color/btn2"
 android:angle="90">
 </gradient>
</shape>

styletv.xml es el diseño para nuestro TextView.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle">
 <solid
 android:color="#ccc"
 />
 <corners
 android:bottomLeftRadius="5dp"
 android:bottomRightRadius="5dp"
 android:radius="0.1dp"
 android:topLeftRadius="5dp"
 android:topRightRadius="5dp" />
 <stroke android:width="1dp" android:color="#ccc"></stroke>
 <padding
 android:top="10dp"
 android:bottom="10dp"
 />
</shape>

Ahora añadiremos dentro de el directorio valúes el Colors.xml

<color name="btn1">#024C5A</color>
<color name="btn2" >#075F6B</color>
<color name="text_button">#fff</color>
<color name="text">#000</color>
<color name="textTitles">#024C5A</color>

activity_main.xml sera el diseño principal de nuestro Activity

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#fff"
 tools:context=".MainActivity">
 <RelativeLayout
 android:layout_width="match_parent"
 android:layout_height="71dp"
 android:background="#024C5A"
 android:weightSum="1">

 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textAppearance="?android:attr/textAppearanceLarge"
 android:text="Enviar Email"
 android:textStyle="bold"
 android:textSize="30dp"
 android:textColor="#fff"
 android:id="@+id/textView13"
 android:layout_centerVertical="true"
 android:layout_centerHorizontal="true" />
 </RelativeLayout>
 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textSize="18dp"
 android:text="To:"
 android:id="@+id/textView"
 android:layout_alignParentLeft="true"
 android:layout_alignParentStart="true"
 android:layout_marginTop="105dp"
 android:layout_marginRight="10dp"
 android:layout_marginLeft="10dp"
 android:textColor="#024C5A" />

 <EditText
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/edtTo"
 android:background="@drawable/styletv"
 android:layout_below="@+id/textView"
 android:layout_marginRight="10dp"
 android:layout_marginLeft="10dp"
 android:layout_centerHorizontal="true"
 />

 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textSize="18dp"
 android:text="Subject: "
 android:id="@+id/textView2"
 android:textColor="@color/textTitles"
 android:layout_below="@+id/edtTo"
 android:layout_alignParentLeft="true"
 android:layout_marginRight="10dp"
 android:layout_marginLeft="10dp"
 android:layout_alignParentStart="true" />

 <EditText
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/edtSubject"
 android:background="@drawable/styletv"
 android:layout_below="@+id/textView2"
 android:layout_marginRight="10dp"
 android:layout_marginLeft="10dp"
 android:layout_centerHorizontal="true" />

 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textSize="18dp"
 android:text="Message: "
 android:textColor="@color/textTitles"
 android:id="@+id/textView3"
 android:layout_below="@+id/edtSubject"
 android:layout_alignParentLeft="true"
 android:layout_marginRight="10dp"
 android:layout_marginLeft="10dp"
 android:layout_alignParentStart="true" />

 <EditText
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:inputType="textMultiLine"
 android:lines="4"
 android:background="@drawable/styletv"
 android:id="@+id/edtMensaje"
 android:layout_below="@+id/textView3"
 android:layout_marginRight="10dp"
 android:layout_marginLeft="10dp"
 android:layout_centerHorizontal="true" />

 <Button
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="Send"
 android:layout_alignParentBottom="true"
 android:layout_centerHorizontal="true"
 android:id="@+id/btnEnviar"
 android:background="@drawable/stylebtn"
 android:textColor="@color/text_button"
 android:layout_margin="10dp"
 android:layout_marginRight="10dp"
 android:layout_marginLeft="10dp"
 android:layout_marginTop="50dp" />
 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textSize="18dp"
 android:textColor="@color/textTitles"
 android:id="@+id/data"
 android:layout_below="@+id/edtMensaje"
 android:layout_alignParentLeft="true"
 android:layout_marginRight="10dp"
 android:layout_marginLeft="10dp"
 android:layout_alignParentStart="true" />
 <ImageButton
 android:layout_width="60dp"
 android:layout_height="60dp"
 android:layout_below="@+id/edtMensaje"
 android:layout_marginRight="10dp"
 android:layout_marginLeft="10dp"
 android:layout_marginTop="10dp"
 android:layout_alignParentEnd="true"
 android:id="@+id/imgbtnChoose"
 android:src="@drawable/attachment"
 android:background="@drawable/stylebtn"
 android:padding="10dp"
 android:adjustViewBounds="true"
 android:scaleType="centerInside" />
</RelativeLayout>

La imagen que se utiliza para nuestro ButtonImage la pueden descargar a su gusto.

Agregar Dependencias build.gradle.

Continuamos con el código. Para no tener problemas con nuestro código necesitamos agregar las dependencias y para ello nos dirigimos al archivo build.gradle (Module: app).


compile 'com.sun.mail:android-mail:1.5.5'
compile 'com.sun.mail:android-activation:1.5.5'

De igual forma si prefieren las librerías Jar. les dejare el link para que las puedan descargar.

Descargar:
activation.jar
additional.jar
mail.jar

Con esto agregado no deberíamos tener problemas con el código de nuestra aplicación.

Código de MaintActivity

Ahora agregaremos el código para nuestro MainActivity. Antes de esto deberán descargar las siguientes clases que les dejare para que las añadan a su proyecto.

Descargar:
JSSEProvider.java
GMailSender.java
ImageFilePath.java

import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
 // Declaramos las variables de tipo EditText
 EditText edtTo,edtSubject,edtMensaje;
 // Declaramos la variable tipo TextVeiw
 TextView txtData;
 // Declara la variable para el request de la selección del archivo
 private int PICK_FILE_REQUEST = 1;
 // Declaramos la variable que contendra la ruta del archivo adjunto
 String filename ;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 // Asignamos las propiedades de los controles a las variables
 edtTo = (EditText) findViewById(R.id.edtTo);
 edtSubject = (EditText) findViewById(R.id.edtSubject);
 edtMensaje = (EditText) findViewById(R.id.edtMensaje);
 txtData = (TextView) findViewById(R.id.data);
 // Verificar la version del SDKy los permisos
 requestRuntimePermission();
 // Evento click del botón
 final Button send = (Button) this.findViewById(R.id.btnEnviar);
 send.setOnClickListener(new View.OnClickListener() {

 public void onClick(View v) {
 Thread thread = new Thread(new Runnable() {
 @Override
 public void run() {
 try {
 // Asignamos las propuedades del correo que utilizaremos
 GMailSender sender = new GMailSender("email", "password");
 // Verificar si se adjunto un archivo
 if(filename != null){
 sender.addAttachment(filename);
 }
 // Enviar el mensaje al correo asignado
 sender.sendMail(edtSubject.getText().toString(),
 edtMensaje.getText().toString(),"email",
 edtTo.getText().toString());
 } catch (Exception e) {
 Log.e("ErrorSendMail", e.getMessage(), e);
 }
 }
 });
 thread.start();
 }
 });
 // ImageButtn para seleccionar el archivo y almacenar la ruta
 ImageButton choose = (ImageButton) this.findViewById(R.id.imgbtnChoose);
 choose.setOnClickListener(new View.OnClickListener() {

 public void onClick(View v) {
 showFileChooser();
 }
 });
 }
 private void showFileChooser() {
 // Accion que se va a realizar en el Intent
 Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
 // Tipo de archivos que se pueden seleccionar
 intent.setType("*/*");
 // Ejecutar la accion Intent
 startActivityForResult(intent, PICK_FILE_REQUEST);
 }
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
 // Verificar que la seleccion cumple con el estado de seleccion
 if (requestCode == PICK_FILE_REQUEST && resultCode == RESULT_OK) {
 // Obtener la data seleccionado
 Uri filePath = data.getData();
 // Asignar la ruta que se obtiene usando la clase imagefilepath
 filename = imagefilepath.getPath(getApplicationContext(), filePath);
 // Obtenemos el nombre del archivo que hemos seleccionado
 String filenames = filename.substring(filename.lastIndexOf("/")+1);
 // Asignamos a nuestro txtData el nombre del archivo
 txtData.setText(filenames);
 }
 }
 private void requestRuntimePermission() {
 if (Build.VERSION.SDK_INT >= 23) {
 if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
 != PackageManager.PERMISSION_GRANTED) {
 ActivityCompat.requestPermissions(this,
 new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
 }
 }
 }
}

Para terminar agregaremos los permisos a nuestro archivo AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

Crear Emulador AVD

Teniendo listo esto podremos ejecutar nuestra aplicación creando un emulador. Aquí

El resultado sera el siguiente.



Compártelo para promover el conocimiento.

Descargar: Aquí

Si le das a alguien un programa, lo frustrarás un día. Si le enseñas a programar, lo frustrarás toda la vida. 
- Anónimo

No hay comentarios:

Publicar un comentario

x

Registrate!

Curso Android Español

Curso Kotlin Español

eBook Free Android Studio

Noticias y Eventos

¡Directamente a tu INBOX!

Le enviaremos nuestros recursos gratis. Para obtener nuestro contenido nuevo, únase a nuestra comunidad. No te molestaremos enviando información inútil. ¡No te pierdas ninguna actualización, mantente conectado! Recuerda verificar tu correo electronico.

Ingrese su dirección de correo electrónico:

Entregado por FeedBurner