Android: envío de correo electrónico

Email Son mensajes distribuidos por medios electrónicos desde un usuario del sistema a uno o más destinatarios a través de una red.

Antes de iniciar la actividad de correo electrónico, debe conocer la funcionalidad de correo electrónico con intención, la intención es transportar datos de un componente a otro componente dentro o fuera de la aplicación.

Para enviar un correo electrónico desde su aplicación, no tiene que implementar un cliente de correo electrónico desde el principio, pero puede usar uno existente como la aplicación de correo electrónico predeterminada proporcionada por Android, Gmail, Outlook, K-9 Mail, etc. propósito, necesitamos escribir una actividad que inicie un cliente de correo electrónico, utilizando un Intent implícito con la acción y los datos correctos. En este ejemplo, vamos a enviar un correo electrónico desde nuestra aplicación utilizando un objeto Intent que lanza clientes de correo electrónico existentes.

La siguiente sección explica las diferentes partes de nuestro objeto Intent necesarias para enviar un correo electrónico.

Objeto de intención: acción para enviar correo electrónico

Usarás ACTION_SENDacción para iniciar un cliente de correo electrónico instalado en su dispositivo Android. A continuación, se muestra una sintaxis simple para crear una intención con la acción ACTION_SEND.

Intent emailIntent = new Intent(Intent.ACTION_SEND);

Objeto de intención: datos / tipo para enviar correo electrónico

Para enviar un correo electrónico debe especificar mailto: como URI usando el método setData () y el tipo de datos será text/plain usando el método setType () de la siguiente manera:

emailIntent.setData(Uri.parse("mailto:"));
emailIntent.setType("text/plain");

Objeto de intención - Extra para enviar correo electrónico

Android tiene soporte incorporado para agregar campos TO, SUBJECT, CC, TEXT, etc.que se pueden adjuntar a la intención antes de enviar la intención a un cliente de correo electrónico de destino. Puede utilizar los siguientes campos adicionales en su correo electrónico:

No Señor. Datos adicionales y descripción
1

EXTRA_BCC

Una cadena [] que contiene direcciones de correo electrónico que deben copiarse en carbón oculto.

2

EXTRA_CC

Una cadena [] que contiene direcciones de correo electrónico que se deben copiar.

3

EXTRA_EMAIL

Una cadena [] que contiene las direcciones de correo electrónico a las que se deben enviar.

4

EXTRA_HTML_TEXT

Una cadena constante que está asociada con la intención, utilizada con ACTION_SEND para proporcionar una alternativa a EXTRA_TEXT como texto con formato HTML.

5

EXTRA_SUBJECT

Una cadena constante que contiene la línea de asunto deseada de un mensaje.

6

EXTRA_TEXT

Un CharSequence constante que está asociado con el Intent, usado con ACTION_SEND para proporcionar los datos literales que se enviarán.

7

EXTRA_TITLE

Un título de diálogo CharSequence para proporcionar al usuario cuando se usa con ACTION_CHOOSER.

Aquí hay un ejemplo que le muestra cómo asignar datos adicionales a su intención:

emailIntent.putExtra(Intent.EXTRA_EMAIL  , new String[]{"Recipient"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject");
emailIntent.putExtra(Intent.EXTRA_TEXT   , "Message Body");

La salida del código anterior es como se muestra a continuación en una imagen

Ejemplo de correo electrónico

Ejemplo

El siguiente ejemplo le muestra en la práctica cómo usar el objeto Intent para iniciar el cliente de correo electrónico para enviar un correo electrónico a los destinatarios dados.

Para experimentar por correo electrónico con este ejemplo, necesitará un dispositivo móvil real equipado con el último sistema operativo Android; de lo contrario, es posible que tenga problemas con el emulador que puede no funcionar correctamente. En segundo lugar, deberá tener un cliente de correo electrónico como GMail (de forma predeterminada, todas las versiones de Android que tienen la aplicación cliente de Gmail) o K9mail instalado en su dispositivo.
Paso Descripción
1 Utilizará Android Studio para crear una aplicación de Android y nombrarla Tutorialspoint en un paquete com.example.tutorialspoint .
2 Modifique el archivo src / MainActivity.java y agregue el código requerido para encargarse del envío de correo electrónico.
3 Modifique el archivo XML de diseño res / layout / activity_main.xml agregue cualquier componente GUI si es necesario. Estoy agregando un botón simple para iniciar el Cliente de correo electrónico.
4 Modifique res / values ​​/ strings.xml para definir los valores constantes requeridos
5 Modifique AndroidManifest.xml como se muestra a continuación
6 Ejecute la aplicación para iniciar el emulador de Android y verifique el resultado de los cambios realizados en la aplicación.

A continuación se muestra el contenido del archivo de actividad principal modificado src/com.example.Tutorialspoint/MainActivity.java.

package com.example.tutorialspoint;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      Button startBtn = (Button) findViewById(R.id.sendEmail);
      startBtn.setOnClickListener(new View.OnClickListener() {
         public void onClick(View view) {
            sendEmail();
         }
      });
   }
	
   protected void sendEmail() {
      Log.i("Send email", "");
      String[] TO = {""};
      String[] CC = {""};
      Intent emailIntent = new Intent(Intent.ACTION_SEND);
      
      emailIntent.setData(Uri.parse("mailto:"));
      emailIntent.setType("text/plain");
      emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
      emailIntent.putExtra(Intent.EXTRA_CC, CC);
      emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Your subject");
      emailIntent.putExtra(Intent.EXTRA_TEXT, "Email message goes here");
      
      try {
         startActivity(Intent.createChooser(emailIntent, "Send mail..."));
         finish();
         Log.i("Finished sending email...", "");
      } catch (android.content.ActivityNotFoundException ex) {
         Toast.makeText(MainActivity.this, "There is no email client installed.", Toast.LENGTH_SHORT).show();
      }
   }
}

A continuación se mostrará el contenido de res/layout/activity_main.xml archivo -

Aquí abc indica acerca del logo de tutorialspoint
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >
   
   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Sending Mail Example"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="30dp" />
      
   <TextView
      android:id="@+id/textView2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point "
      android:textColor="#ff87ff09"
      android:textSize="30dp"
      android:layout_above="@+id/imageButton"
      android:layout_alignRight="@+id/imageButton"
      android:layout_alignEnd="@+id/imageButton" />
      
   <ImageButton
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageButton"
      android:src="@drawable/abc"
      android:layout_centerVertical="true"
      android:layout_centerHorizontal="true" />
      
   <Button 
      android:id="@+id/sendEmail"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/compose_email"/>
    
</LinearLayout>

A continuación se mostrará el contenido de res/values/strings.xml para definir dos nuevas constantes -

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">Tutorialspoint</string>
   <string name="compose_email">Compose Email</string>
</resources>

A continuación se muestra el contenido predeterminado de AndroidManifest.xml -

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.Tutorialspoint" >
   
   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.tutorialspoint.MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

Intentemos ejecutar tu tutorialspointsolicitud. Supongo que ha conectado su dispositivo móvil Android real con su computadora. Para ejecutar la aplicación desde Android Studio, abra uno de los archivos de actividad de su proyecto y haga clic en el icono Ejecutar en la barra de herramientas. Antes de iniciar su aplicación, el instalador de Android Studio mostrará la siguiente ventana para seleccionar una opción donde desea ejecutar su aplicación de Android.Seleccione su dispositivo móvil como una opción y luego verifique su dispositivo móvil que mostrará la siguiente pantalla:

Ahora usa Compose Emailpara enumerar todos los clientes de correo electrónico instalados. De la lista, puede elegir uno de los clientes de correo electrónico para enviar su correo electrónico. Usaré el cliente de Gmail para enviar mi correo electrónico, que tendrá todos los campos predeterminados proporcionados disponibles como se muestra a continuación. aquíFrom: será el ID de correo electrónico predeterminado que haya registrado para su dispositivo Android.

Puede modificar cualquiera de los campos predeterminados dados y finalmente usar el botón enviar correo electrónico para enviar su correo electrónico a los destinatarios mencionados.