Jump to content

Tuto: envoyer un mail via gmail à partir d'une application


Recommended Posts

Voici comment envoyer un email via gmail à partir de votre application :

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_SUBJECT, "Sujet");
i.putExtra(Intent.EXTRA_TEXT, "bla bla bla, merci neoakira");
startActivity(Intent.createChooser(i, "Titre:"));

ou un mail avec une pièce jointe...

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("audio/mp3");
i.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");
i.putExtra(Intent.EXTRA_SUBJECT, "Sujet");
i.putExtra(Intent.EXTRA_TEXT, "bla bla bla, merci neoakira");
startActivity(Intent.createChooser(i, "Titre:"));

file:///sdcard/mysong.mp3 correspond à un Uri créé depuis un fichier :

http://developer.android.com/reference/android/net/Uri.html#fromFile(java.io.File)

Edited by neoakira
Link to comment
Share on other sites

  • 7 months later...

J'ai un problème pour mettre un link vers le market dans le mail (market:// ...).

En passant par un spannablestring, le lien n'dxg pas clicable dans gmail android, ni dans gmail (webmail classique) mais il est clicable dans thunderbird...

Une idée ?

Application FreeboxMobile
FreeboxMobile est une application Open Source (gratuite) qui te permet d\'accéder aux services de ta Freebox à partir de ton smartphone Android.\n\nTu peux la télécharger (à partir de ton smartphone) à en cliquant sur le lien ci-dessous.\n\nA plus tard !\n\n
Telecharger FreeboxMobile
market://search/?q=Freebox

   private void shareApp()
   {
       SpannableString ss = new SpannableString(getResources().getString(R.string.mail_link));
       ss.setSpan(new URLSpan(getResources().getString(R.string.app_url)), 0, ss.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
       SpannableStringBuilder ssb = new SpannableStringBuilder(getResources().getString(R.string.mail_text1)).append(' ').append(ss);//.append(' ').append(getResources().getString(R.string.mail_text2)); 
       Intent i = new Intent(Intent.ACTION_SEND)
           .putExtra(Intent.EXTRA_TEXT, ssb)
           .putExtra(Intent.EXTRA_SUBJECT, 
                   getString(R.string.mail_subject)) 
                   .setType("message/rfc822");
       startActivity(Intent.createChooser(i,  "Titre:")); 
   }

Merci !

Link to comment
Share on other sites

bonjour,

je viens de tenter l'envoi de mail à partir de l'émulateur et ça fonctionne pas (peut être est-ce normal car sur l'émulateur y a pas de compte gmail...)

En tout cas voici mon code:

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"moi@gmail.com"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "xxx - Bug report");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Sender: " + mailSended + " " + textSended);
Log.d(Variables.TAG_APPLI, "Appel Activity");
Activity activity = new Activity();
Log.d(Variables.TAG_APPLI, "Starting Activity...");
activity.startActivity(Intent.createChooser(emailIntent, "Envoi email…"));

je n'ai aucun message d'erreur, de plus j'arrête pas de me battre pour essayer d'avoir des traces. Le LogCat dès fois il affiche des trucs dès fois non, je sais pas pourquoi. Donc c'est galère pour savoir quels sont les problèmes.

Je vois dans les messages précédents que vous avez réussi... y a un truc de différent avec ce que j'ai fait ?

Ma classe étends "Dialog", pour "Activity" je fais un import.

Edited by cefabien
Link to comment
Share on other sites

oui effectivement si j'avais un temps soit peu réfléchi :p

merci :)

Je vais tester de ce pas...

Edit:

Alors je viens de ré-essayer et j'ai l'écran "Fermeture soudaine", pas de messages d'erreur dans les consoles, ça ne fonctionne pas.

Dans ma classe suivante qui étends "Dialog" j'ai le code qui appel:

SendMail sendMail = new SendMail();
sendMail.callSendMail("mailSended", "textSended");

et ma classe SendMail est la suivante:

import android.app.Activity;
import android.content.Intent;

public class SendMail extends Activity {
   public void callSendMail(String mailSended, String textSended)
   {
       Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
       emailIntent.setType("message/rfc822");
       emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"***@gmail.com"});
       emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "***France - Bug report");
       emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Sender: " + mailSended + " " + textSended);
       try {
             startActivity(Intent.createChooser(emailIntent, "Envoi email…"));
       } catch (Exception e) {
           Log.d(Variables.TAG_APPLI, "Erreur");
           e.printStackTrace();
       }
   }
}

est-ce que vous voyez un truc qui cloche ?

Merci

Edit again:

J'ai l'erreur suivante lancé sur le device,

au démarrage de mon appli:

Error: threa attach failed
Error: threa attach failed

Et quand je tente l'envoi du mail j'ai une erreur dans la console LogCat mais pas sur le device :

NullPointerException
at android.app.Activity.startActivityForResult(Activity.java:2693)
at android.app.Activity.startActivity(Activity.java:2798)
...

Je sais ce qu'est un nullPointerException mais là je vois pas ce qu'il manque...

Edited by cefabien
Link to comment
Share on other sites

oui j'ai bien essayé de le faire mais le problème c'est que j'appelle uniquement la méthode

startActivity(.....)

et le null je le reçois sur l'appel interne de

startActivityForResult(...)

auquel je n'ai pas accès en debug.

J'ai pensai que le problème venait du manifest mais apparemment non.

Je vais aller prendre ma pagaie et ramer ;)

Link to comment
Share on other sites

Bordel, je viens de comprendre !!

Dans cette classe je n'avais plus mon context d'où l'impossiblité de fonctionner avec

startActivity(......

du coup, lors de l'instanciation de ma classe, je lui fait passer mon context pour lancer l'Activity:

context.startActivity(......

et là ça fonctionne, mais du coup ce n'est pas vraiment le fonctionnement que j'espérer.

Ca m'ouvre une liste d'Activity à choisir pour envoyer mon message, mais moi, ce que je veux c'est que le message soit directement envoyé par mail sans devoir ouvrir une autre appli.... C'est possible ça ?

Merci pour votre aide sur mon problème précédent :)

Link to comment
Share on other sites

Hello,

je voulais savoir, comment faire marcher un code similaire pour un archos 5 IT ?

Sur le Hero le lien marche très bien (ça ouvre l'appli gmail) mais sur l'archos 5 IT, même si j'ai configuré un compte de messagerie sur l'appli E-mail, un message d'erreur s'affiche en disant qu'"aucune application ne peut effectuer cette action"..

Merci o/

EDIT : ok, je sais pas trop si c'est la bonne façon de faire mais j'ai modifié

i.setType("message/rfc822");

en

i.setType("text/plain");

Et au clic le système propose de choisir entre les applis gérant les e-mails.

Edited by Leimi
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...