Question Envoyer un courrier électronique


Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, "emailaddress@emailaddress.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "I'm email body.");

startActivity(Intent.createChooser(intent, "Send Email"));

Le code ci-dessus ouvre une boîte de dialogue montrant les applications suivantes: - Bluetooth, Google Docs, Yahoo Mail, Gmail, Orkut, Skype, etc.

En fait, je veux filtrer ces options de liste. Je souhaite afficher uniquement les applications liées aux e-mails, par exemple Gmail, Yahoo Mail. Comment faire?

J'ai vu cet exemple sur l'application 'Android Market'.

  1. Ouvrez l'application Android Market
  2. Ouvrez toute application où le développeur a spécifié son adresse e-mail. (Si vous ne pouvez pas trouver une telle application suffit d'ouvrir mon application: - marché: // détails? Id = com.becomputer06.vehicle.diary.free, OU recherche par 'Journal du véhicule')
  3. Faites défiler jusqu'à 'DEVELOPER'
  4. Cliquez sur 'Envoyer un e-mail'

La boîte de dialogue affiche uniquement les applications e-mail, par ex. Gmail, Yahoo Mail etc. Il ne montre pas Bluetooth, Orkut etc. Quel code produit un tel dialogue?


462
2018-01-02 13:50


origine


Réponses:


quand vous changez votre intention.setType comme ci-dessous, vous obtiendrez

intent.setType("text/plain");

Utilisation android.content.Intent.ACTION_SENDTO pour obtenir seulement la liste des clients de messagerie, sans facebook ou d'autres applications. Juste les clients de messagerie. Ex:

new Intent(Intent.ACTION_SENDTO);

Je ne vous suggère pas d'accéder directement à l'application de messagerie. Laissez l'utilisateur choisir son application de messagerie préférée. Ne le contraignez pas.

Si vous utilisez ACTION_SENDTO, putExtra ne fonctionne pas pour ajouter l'objet et le texte à l'intention. Utilisez Uri pour ajouter le sujet et le corps du texte.

MODIFIER: On peut utiliser message/rfc822 au lieu de "text/plain" comme le type MIME. Cependant, cela n'indique pas "seulement offrir des clients de messagerie" - il indique "offre tout ce qui supporte les données de message / rfc822". Cela pourrait facilement inclure certaines applications qui ne sont pas des clients de messagerie.

message/rfc822 prend en charge les types MIME de .mhtml, .mht, .mime


179
2018-01-02 13:58



La réponse acceptée ne fonctionne pas sur le 4.1.2. Cela devrait fonctionner sur toutes les plateformes:

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
            "mailto","abc@gmail.com", null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Body");
startActivity(Intent.createChooser(emailIntent, "Send email..."));

J'espère que cela t'aides.

Mise à jour: Selon marcwjj, il semble que sur 4.3, nous devons passer un tableau de chaînes au lieu d'une chaîne pour l'adresse e-mail pour le faire fonctionner. Nous pourrions avoir besoin d'ajouter une ligne supplémentaire:

intent.putExtra(Intent.EXTRA_EMAIL, addresses); // String[] addresses

Lien de référence


768
2018-02-22 10:36



Il existe trois approches principales:

String email = /* Your email address here */
String subject = /* Your subject here */
String body = /* Your body here */
String chooserTitle = /* Your chooser title here */

1. personnalisé Uri:

Uri uri = Uri.parse("mailto:" + email)
    .buildUpon()
    .appendQueryParameter("subject", subject)
    .appendQueryParameter("body", body)
    .build();

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(Intent.createChooser(emailIntent, chooserTitle));

2. Utilisation Intent extras:

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:" + email));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, body);
//emailIntent.putExtra(Intent.EXTRA_HTML_TEXT, body); //If you are using HTML in your body text

startActivity(Intent.createChooser(emailIntent, "Chooser Title"));

3. Bibliothèque de support ShareCompat:

Activity activity = /* Your activity here */

ShareCompat.IntentBuilder.from(activity)
    .setType("message/rfc822")
    .addEmailTo(email)
    .setSubject(subject)
    .setText(body)
    //.setHtmlText(body) //If you are using HTML in your body text
    .setChooserTitle(chooserTitle)
    .startChooser();

191
2018-04-25 14:46



Ceci est cité du document officiel Android, je l'ai testé sur Android 4.4, et fonctionne parfaitement. Voir plus d'exemples à https://developer.android.com/guide/components/intents-common.html#Email

public void composeEmail(String[] addresses, String subject) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:")); // only email apps should handle this
    intent.putExtra(Intent.EXTRA_EMAIL, addresses);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

81
2018-04-13 20:59



Une réponse tardive, même si j'ai trouvé une solution qui pourrait aider les autres

Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.setData(Uri.parse("mailto: abc@xyz.com"));
startActivity(Intent.createChooser(emailIntent, "Send feedback"));

C'était ma sortie (Gmail + Inbox et rien d'autre)

enter image description here

J'ai cette solution de Site Google Developers


47
2018-02-03 08:24



Essayer:

intent.setType("message/rfc822");

31
2018-01-03 23:12



Cela fonctionne pour moi:

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL  , new String[] { "me@somewhere.com" });
intent.putExtra(Intent.EXTRA_SUBJECT, "My subject");

startActivity(Intent.createChooser(intent, "Email via..."));

c'est-à-dire utiliser le ACTION_SENDTO action plutôt que la ACTION_SEND action. Je l'ai essayé sur un certain nombre d'appareils Android 4.4 et il limite le pop-up sélecteur pour afficher uniquement les applications de messagerie (Email, Gmail, Yahoo Mail, etc.) et insère correctement l'adresse e-mail et le sujet dans l'e-mail.


24
2018-01-24 09:21



C'est la façon de le faire selon Android Developer Docs ajoutez ces lignes de code à votre application:

Intent intent = new Intent(Intent.ACTION_SEND);//common intent 
intent.setData(Uri.parse("mailto:")); // only email apps should handle this

Si vous voulez ajouter le corps et le sujet, ajoutez ceci

intent.putExtra(Intent.EXTRA_SUBJECT, "Your Subject Here");
intent.putExtra(Intent.EXTRA_TEXT, "E-mail body" );

17
2018-06-05 02:27



Si vous ne souhaitez utiliser que les clients de messagerie que vous utilisez android.content.Intent.EXTRA_EMAILavec un tableau. Voici un exemple:

final Intent result = new Intent(android.content.Intent.ACTION_SEND);
result.setType("plain/text");
result.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { recipient });
result.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
result.putExtra(android.content.Intent.EXTRA_TEXT, body);

13
2018-02-17 10:47