Aller au contenu

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


neoakira

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)

Modifié par neoakira
Lien vers le commentaire
Partager sur d’autres 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 !

Lien vers le commentaire
Partager sur d’autres 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.

Modifié par cefabien
Lien vers le commentaire
Partager sur d’autres 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...

Modifié par cefabien
Lien vers le commentaire
Partager sur d’autres 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 ;)

Lien vers le commentaire
Partager sur d’autres 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 :)

Lien vers le commentaire
Partager sur d’autres 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.

Modifié par Leimi
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...