[Tutoriel] :Envoyer un email depuis une application Android

Dans certaines applications , on a besoin d'intégrer un module d’envoi des courriels (Feedbacks , informations etc. ). En Android , il est simple de faire ça. 

#1. La Méthode:
Pour envoyer un émail depuis une application Android ,on a besoin de connaitre :
  • Destinataire
  • Destinataire en Cc (copie conforme)(Facultative)
  • Destinataire  en Cci (copie conforme invisible) (Facultative)
  • Objet d’émail
  • Message d’émail
  • Pièce jointe
Puis on utilise ce code :

String to = "email de destinataire";
  String subject = "objet d'email";
  String message = "message";
  String toCc = "email de destinataire en CC";
  String toCci = "email de destinataire en CCi";
  Intent email = new Intent(Intent.ACTION_SEND);
  email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to});
  //email.putExtra(Intent.EXTRA_CC, new String[]{ toCc});
  //email.putExtra(Intent.EXTRA_BCC, new String[]{toCci});
  //email.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/file.pdf");
  email.putExtra(Intent.EXTRA_SUBJECT, subject);
  email.putExtra(Intent.EXTRA_TEXT, message);
   
  email.setType("message/rfc822");
    
  startActivity(Intent.createChooser(email, "Choisissez un client
                de messagerie:"));

#2. Exemple:
Pour bien comprendre , on va appliquer la méthode déjà écrite dans une application.On crée un nouveau projet Android:
Application Name: Email Android Exemple
Package Name :com.tutozone.emailandroid
Activity Name: SendEmailActivity

Dans la layout "main.xml" , on crée 3 "EditText" et 1 bouton

< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    < TextView
        android:id="@+id/textViewPhoneNo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="To : "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    < EditText
        android:id="@+id/editTextTo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress" >

        
    < /EditText>

    < TextView
        android:id="@+id/textViewSubject"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Subject : "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    < EditText
        android:id="@+id/editTextSubject"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         >
    < /EditText>

    < TextView
        android:id="@+id/textViewMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Message : "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    < EditText
        android:id="@+id/editTextMessage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:inputType="textMultiLine"
        android:lines="5" />

    < Button
        android:id="@+id/buttonSend"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Send" />

< /LinearLayout>

Maintenant dans l'activité principale "SendEmailActivity.java", on va mettre le code d'envois dans une methode , et on l'appelle lors de l'action du bouton:
public class SendEmailActivity extends Activity {
 
 Button buttonSend;
 EditText textTo;
 EditText textSubject;
 EditText textMessage;
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
 
  buttonSend = (Button) findViewById(R.id.buttonSend);
  textTo = (EditText) findViewById(R.id.editTextTo);
  textSubject = (EditText) findViewById(R.id.editTextSubject);
  textMessage = (EditText) findViewById(R.id.editTextMessage);
 
  buttonSend.setOnClickListener(new OnClickListener() {
 
   @Override
   public void onClick(View v) {
 
     sendEmail();
   }
  });
 }
 
 public void sendEmail()
 {
  String to = textTo.getText().toString();
  String subject = textSubject.getText().toString();
  String message = textMessage.getText().toString();
  //String toCc = "email de destinataire en CC";
  //String toCci = "email de destinataire en CCi";
  Intent email = new Intent(Intent.ACTION_SEND);
  email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to});
  //email.putExtra(Intent.EXTRA_CC, new String[]{ toCc});
  //email.putExtra(Intent.EXTRA_BCC, new String[]{toCci});
  //email.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/file.pdf");
  email.putExtra(Intent.EXTRA_SUBJECT, subject);
  email.putExtra(Intent.EXTRA_TEXT, message);
   
  email.setType("message/rfc822");
    
  startActivity(Intent.createChooser(email, "Choisissez un client
                  de messagerie:"));
 }
}

#3. Test:
Si vous testez l'application dans un émulateur , un erreur s'affiche:“No application can perform this action“.
Erreur dans l'émulateur
 Si vous testez dans une appareil réel , l’émail sera envoyé.
#4. Code complet:
Le code de notre application se trouve dans le site GitHub.
Code source
Vous avez aimé cet article ? alors suivez-nous sur Twitter, Google+ et Facebook, et partagez-le avec les boutons ci-dessous ! Vos commentaires sont les bienvenus.
 

1 commentaires:

merci pour votre reponse mais y a-t-il pas un moyen pour envoyer le mail automatiquement sans passer par le choix de la messagerie à utiliser?

Reply

Enregistrer un commentaire