Android - Envoi d'e-mails

Email Il s'agit de messages distribués par voie électronique d'un utilisateur du système à un ou plusieurs destinataires via un réseau.

Avant de démarrer l'activité d'e-mail, vous devez connaître la fonctionnalité d'e-mail avec intention, l'intention transporte des données d'un composant à un autre composant dans l'application ou en dehors de l'application.

Pour envoyer un e-mail à partir de votre application, vous n'avez pas à implémenter un client de messagerie depuis le début, mais vous pouvez en utiliser un existant comme l'application de messagerie par défaut fournie par Android, Gmail, Outlook, K-9 Mail, etc. Pour cela but, nous devons écrire une activité qui lance un client de messagerie, en utilisant une intention implicite avec la bonne action et les bonnes données. Dans cet exemple, nous allons envoyer un e-mail depuis notre application en utilisant un objet Intent qui lance les clients de messagerie existants.

La section suivante explique les différentes parties de notre objet Intention requises pour envoyer un e-mail.

Objet d'intention - Action pour envoyer un e-mail

Vous utiliserez ACTION_SENDaction pour lancer un client de messagerie installé sur votre appareil Android. Voici une syntaxe simple pour créer une intention avec l'action ACTION_SEND.

Intent emailIntent = new Intent(Intent.ACTION_SEND);

Objet d'intention - Données / Type pour envoyer un e-mail

Pour envoyer un e-mail, vous devez spécifier mailto: comme URI en utilisant la méthode setData () et le type de données sera text/plain en utilisant la méthode setType () comme suit -

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

Objet d'intention - Extra pour envoyer un e-mail

Android a un support intégré pour ajouter des champs TO, SUBJECT, CC, TEXT, etc. qui peuvent être attachés à l'intention avant d'envoyer l'intention à un client de messagerie cible. Vous pouvez utiliser les champs supplémentaires suivants dans votre e-mail -

N ° Sr. Données supplémentaires et description
1

EXTRA_BCC

Une chaîne [] contenant des adresses e-mail qui doivent être copiées en aveugle au carbone.

2

EXTRA_CC

Une chaîne [] contenant des adresses e-mail qui doivent être copiées au carbone.

3

EXTRA_EMAIL

Une chaîne [] contenant les adresses e-mail auxquelles il faut remettre.

4

EXTRA_HTML_TEXT

Chaîne constante associée à l'intention, utilisée avec ACTION_SEND pour fournir une alternative à EXTRA_TEXT sous forme de texte au format HTML.

5

EXTRA_SUBJECT

Une chaîne constante contenant la ligne d'objet souhaitée d'un message.

6

EXTRA_TEXT

CharSequence constante qui est associée à l'intention, utilisée avec ACTION_SEND pour fournir les données littérales à envoyer.

sept

EXTRA_TITLE

Un titre de boîte de dialogue CharSequence à fournir à l'utilisateur lorsqu'il est utilisé avec un ACTION_CHOOSER.

Voici un exemple vous montrant comment attribuer des données supplémentaires à votre intention -

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

La sortie du code ci-dessus est comme ci-dessous montré une image

Exemple d'email

Exemple

L'exemple suivant vous montre en pratique comment utiliser l'objet Intention pour lancer le client de messagerie pour envoyer un e-mail aux destinataires donnés.

Pour expérimenter par e-mail avec cet exemple, vous aurez besoin d'un appareil mobile équipé du dernier système d'exploitation Android, sinon vous pourriez avoir du mal avec l'émulateur qui pourrait ne pas fonctionner correctement. Deuxièmement, vous aurez besoin d'un client de messagerie comme GMail (par défaut, chaque version Android ayant l'application client Gmail) ou K9mail installé sur votre appareil.
Étape La description
1 Vous utiliserez Android studio pour créer une application Android et la nommerez Tutorialspoint sous un package com.example.tutorialspoint .
2 Modifiez le fichier src / MainActivity.java et ajoutez le code requis pour prendre en charge l'envoi du courrier électronique.
3 Modifiez le fichier XML de mise en page res / layout / activity_main.xml, ajoutez tout composant GUI si nécessaire. J'ajoute un simple bouton pour lancer le client de messagerie.
4 Modifiez res / values ​​/ strings.xml pour définir les valeurs constantes requises
5 Modifiez AndroidManifest.xml comme indiqué ci-dessous
6 Exécutez l'application pour lancer l'émulateur Android et vérifier le résultat des modifications effectuées dans l'application.

Voici le contenu du fichier d'activité principal modifié 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();
      }
   }
}

Voici le contenu de res/layout/activity_main.xml fichier -

Ici abc indique le 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>

Voici le contenu de res/values/strings.xml pour définir deux nouvelles constantes -

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

Voici le contenu par défaut 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>

Essayons d'exécuter votre tutorialspointapplication. Je suppose que vous avez connecté votre appareil mobile Android à votre ordinateur. Pour exécuter l'application à partir d'Android Studio, ouvrez l'un des fichiers d'activité de votre projet et cliquez sur l' icône Exécuter dans la barre d'outils. Avant de démarrer votre application, le programme d'installation du studio Android affichera la fenêtre suivante pour sélectionner une option dans laquelle vous souhaitez exécuter votre application Android.Sélectionnez votre appareil mobile comme option, puis vérifiez votre appareil mobile qui affichera l'écran suivant -

Maintenant, utilisez Compose Emailpour lister tous les clients de messagerie installés. Dans la liste, vous pouvez choisir l'un des clients de messagerie pour envoyer votre e-mail. Je vais utiliser le client Gmail pour envoyer mon e-mail qui contiendra tous les champs par défaut fournis, comme indiqué ci-dessous. IciFrom: sera l'ID de messagerie par défaut que vous avez enregistré pour votre appareil Android.

Vous pouvez modifier l'un des champs par défaut donnés et enfin utiliser le bouton Envoyer un e-mail pour envoyer votre e-mail aux destinataires mentionnés.