Android - Invio di e-mail

Email sono messaggi distribuiti per via elettronica da un utente del sistema a uno o più destinatari tramite una rete.

Prima di iniziare l'attività di posta elettronica, è necessario conoscere la funzionalità di posta elettronica con intento, Intent trasporta i dati da un componente a un altro componente all'interno o all'esterno dell'applicazione.

Per inviare un'e-mail dalla tua applicazione, non devi implementare un client di posta dall'inizio, ma puoi usarne uno esistente come l'app di posta elettronica predefinita fornita da Android, Gmail, Outlook, K-9 Mail ecc. scopo, dobbiamo scrivere un'attività che avvii un client di posta elettronica, utilizzando un intento implicito con l'azione e i dati giusti. In questo esempio, invieremo un'e-mail dalla nostra app utilizzando un oggetto Intent che avvia i client di posta esistenti.

La sezione seguente spiega le diverse parti del nostro oggetto Intent richiesto per inviare un'e-mail.

Oggetto intento: azione per inviare e-mail

Userai ACTION_SENDazione per avviare un client di posta elettronica installato sul tuo dispositivo Android. La seguente è una semplice sintassi per creare un intento con l'azione ACTION_SEND.

Intent emailIntent = new Intent(Intent.ACTION_SEND);

Oggetto intento: dati / tipo per inviare e-mail

Per inviare un'e-mail è necessario specificare mailto: come URI utilizzando il metodo setData () e il tipo di dati sarà to text/plain utilizzando il metodo setType () come segue -

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

Oggetto intento - Extra per inviare e-mail

Android ha il supporto integrato per aggiungere campi A, SUBJECT, CC, TEXT ecc. Che possono essere allegati all'intento prima di inviare l'intento a un client di posta elettronica di destinazione. Puoi utilizzare i seguenti campi extra nella tua email:

Sr.No. Dati e descrizione extra
1

EXTRA_BCC

Una stringa [] contenente gli indirizzi di posta elettronica che dovrebbero essere copiati alla cieca.

2

EXTRA_CC

Una stringa [] contenente gli indirizzi e-mail da copiare.

3

EXTRA_EMAIL

Una stringa [] contenente gli indirizzi di posta elettronica a cui inviare la posta.

4

EXTRA_HTML_TEXT

Una stringa costante associata all'intento, utilizzata con ACTION_SEND per fornire un'alternativa a EXTRA_TEXT come testo in formato HTML.

5

EXTRA_SUBJECT

Una stringa costante contenente la riga dell'oggetto desiderata di un messaggio.

6

EXTRA_TEXT

Una costante CharSequence associata all'intento, utilizzata con ACTION_SEND per fornire i dati letterali da inviare.

7

EXTRA_TITLE

Un titolo della finestra di dialogo CharSequence da fornire all'utente se utilizzato con un ACTION_CHOOSER.

Ecco un esempio che mostra come assegnare dati extra al tuo intento:

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

L'output del codice sopra è come mostrato nell'immagine sottostante

Esempio di posta elettronica

Esempio

L'esempio seguente mostra in pratica come utilizzare l'oggetto Intent per avviare il client di posta per inviare un'e-mail ai destinatari specificati.

Per sperimentare tramite e-mail con questo esempio, è necessario un dispositivo mobile effettivo dotato dell'ultimo sistema operativo Android, altrimenti potresti avere problemi con l'emulatore che potrebbe non funzionare correttamente. Secondo, dovrai avere un client di posta elettronica come GMail (per impostazione predefinita, ogni versione di Android con l'app client Gmail) o K9mail installato sul tuo dispositivo.
Passo Descrizione
1 Utilizzerai Android Studio per creare un'applicazione Android e denominarla Tutorialspoint in un pacchetto com.example.tutorialspoint .
2 Modifica il file src / MainActivity.java e aggiungi il codice richiesto per occuparti dell'invio di email.
3 Modifica il file XML di layout res / layout / activity_main.xml aggiungi qualsiasi componente della GUI se necessario. Sto aggiungendo un semplice pulsante per avviare il client di posta.
4 Modificare res / values ​​/ strings.xml per definire i valori costanti richiesti
5 Modifica AndroidManifest.xml come mostrato di seguito
6 Esegui l'applicazione per avviare l'emulatore Android e verifica il risultato delle modifiche apportate nell'applicazione.

Di seguito è riportato il contenuto del file di attività principale modificato 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();
      }
   }
}

Di seguito sarà il contenuto di res/layout/activity_main.xml file -

Qui abc indica il logo 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>

Di seguito sarà il contenuto di res/values/strings.xml per definire due nuove costanti -

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

Di seguito è riportato il contenuto predefinito di 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>

Proviamo a eseguire il tuo tutorialspointapplicazione. Presumo che tu abbia collegato il tuo attuale dispositivo mobile Android al tuo computer. Per eseguire l'app da Android Studio, apri uno dei file di attività del progetto e fai clic sull'icona Esegui dalla barra degli strumenti. Prima di avviare l'applicazione, il programma di installazione di Android Studio visualizzerà la seguente finestra per selezionare un'opzione in cui si desidera eseguire l'applicazione Android.Seleziona il tuo dispositivo mobile come opzione e quindi controlla il tuo dispositivo mobile che mostrerà la seguente schermata:

Ora usa Compose Emailpulsante per elencare tutti i client di posta elettronica installati. Dall'elenco, puoi scegliere uno dei client di posta elettronica per inviare la tua posta. Userò il client Gmail per inviare la mia email che avrà tutti i campi predefiniti forniti disponibili come mostrato di seguito. QuiFrom: sarà l'ID e-mail predefinito che hai registrato per il tuo dispositivo Android.

È possibile modificare uno dei campi predefiniti forniti e infine utilizzare il pulsante Invia e-mail per inviare la propria e-mail ai destinatari menzionati.