メールインテントを送信


588
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"));

上記のコードは、次のアプリを表示するダイアログを開きます:-Bluetooth、Googleドキュメント、Yahooメール、Gmail、orkut、Skypeなど。

実際には、これらのリストオプションをフィルター処理したいと思います。Gmail、Yahoo Mailなどのメール関連アプリのみを表示したい。どうやってするの?

「Android Market」アプリケーションでそのような例を見てきました。

  1. Androidマーケットアプリを開く
  2. 開発者がメールアドレスを指定したアプリケーションを開きます。(そのようなアプリが見つからない場合は、私のアプリを開いてください:-market:// details?id = com.becomputer06.vehicle.diary.free、または「Vehicle Diary」で検索してください)
  3. 「DEVELOPER」までスクロールします
  4. [メールを送信]をクリックします

ダイアログには、Gmail、Yahoo Mailなどのメールアプリのみが表示されます。Bluetooth、orkutなどは表示されません。このようなダイアログを生成するコードは何ですか?


4
Intent.ACTION_SENDではこれはできません。多分それはGmail-Appに直接インテントで動作しますが、これが可能かどうかはわかりません。
Thommy

19
ここでメールのインテントについて学ぶ人がいる場合、EXTRA_MAILはString[]Stringここに示されているだけでなくにも対応している必要があります。
bigstones



:いくつか良いアドバイスは、ここを参照してくださいmedium.com/@cketti/...
フェリックス・D.

回答:


218

以下のようにintent.setTypeを変更すると、

intent.setType("text/plain");

android.content.Intent.ACTION_SENDTOFacebookやその他のアプリを使用せずに、電子メールクライアントのリストのみを取得するために使用します。メールクライアントだけ。例:

new Intent(Intent.ACTION_SENDTO);

メールアプリに直接アクセスすることはお勧めしません。ユーザーが自分のお気に入りのメールアプリを選択できるようにします。彼を拘束しないでください。

ACTION_SENDTOを使用する場合、putExtraはインテントに件名とテキストを追加するようには機能しません。Uriを使用して、件名と本文のテキストを追加します。

編集: MIMEタイプのmessage/rfc822代わりに 使用できます"text/plain"。ただし、これは「メールクライアントのみを提供する」という意味ではなく、「message / rfc822データをサポートするものは何でも提供する」という意味です。これには、電子メールクライアントではない一部のアプリケーションを簡単に含めることができます。

message/rfc822 MIMEタイプをサポート .mhtml, .mht, .mime


7
希望する出力を生成するためのコードを提供できますか?
ディラ

9
@ becomputer06これを参照してください:stackoverflow.com/questions/8284706/send-email-via-gmail
Padma Kumar

76
インテントチューザーはno apps installed to perform this intent私がいつ使用するかを言っていますACTION_SENDTO。私はAndroid 4.1.2を使用していますが、メールアプリをインストールしています...
ffleandro

4
「正しい」方法はマグナスからの答えです。採用された回答を変更するには、元のポスターをお勧めします。
ジャボット2013

8
MIMEタイプを使用して送信操作を実行することはお勧めできません。基本的に、Androidにタイプのファイルの送信をサポートするアプリのリストを提供するように指示しているためですmessage/rfc822。それがありますいない電子メールの送信と同じ。使用mailto:代わりにプロトコルを電子メールクライアントが実際に理解するものだからです。
Paul Lammertsma 2013年

872

受け入れられた答えは、4.1.2では機能しません。これはすべてのプラットフォームで機能するはずです。

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..."));

お役に立てれば。

更新:marcwjjによると、4.3では、電子メールアドレスを機能させるために、文字列ではなく文字列配列を渡す必要があるようです。さらに1行追加する必要があるかもしれません:

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

参照リンク


7
あなたは正しいですし、それは4.2にも当てはまりません。だから、これが実際に唯一の正しい答えです、ありがとう!
mDroidd 2013年

12
これは完璧です。以下の誰かが、「mailto」の部分を指定することが、利用可能なオプションをメールクライアントに限定するものであると述べました。Uri.fromParts( "mailto"、 ""、null)を使用すると、カーソルが受信者フィールドに配置されます-必要なものに最適です。
シャギー2013

24
このemailIntent.putExtra(Intent.EXTRA_TEXT、 "I'm email body。");を試してください。
thanhbinh84 2013

15
あなたが特定の受信者を持っていない場合は、これも動作します:Uri.fromParts("mailto", "", null)
フィル・

25
これは私のAndroid 4.3ではもう機能しません。完璧に動作しており、意図として電子メールを送信するには、公式のAndroidのドキュメントをチェックしてください:developer.android.com/guide/components/...
marcwjj

244

主なアプローチは3つあります。

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

1.カスタム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. Intentエキストラの使用:

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.サポートライブラリ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();

1
これは私にとってはずっとうまくいきました-他のオプションは可能なハンドラとしていくつかのまっすぐなもの(例えばSkype)をポップアップしました。
Chris Rae

1
%バッファにシンボルがある場合、結果の電子メールの一部の文字は正しくエンコードされません。Uri.encode@minipifが提案するダンスを実行する必要があります。
Giulio Piancastelli 2013

12
これはここでの最良の回答です。他の人を試す時間を無駄にしないでください。ここで2番目のものは私が選択したものであり、完全に機能し、gDriveではなく、bluetoothではなく純粋なメールアプリのみを表示します。ありがとう@ becomputer06
Hugo

1
「&」文字に注意してください。&の文字をメールの本文に含めた場合、これらのメソッドは&の後に本文を切り捨てます。たとえば、「I am&a sample body」のような本文を送信すると、「I am」とだけ表示されます
EmreKoçOct

4
ShareCompatを使用すると、メールクライアントだけでなく、ほぼすべてのアプリが作成されます。
rpattabi 2016年

111

これはAndroidの公式ドキュメントから引用されており、Android 4.4でテストしましたが、完全に動作します。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);
    }
}

6
同意しました!このような答えがリストの一番下にあることに驚いています。Androidドキュメントの比較的最近の変更だったと思います。
マイキー

すごい!信頼できるもの、それはAndroidアプリ開発者の「聖書」に言及しました。
dev_android

1
mailtoの後のコロンは私のためのトリックをしました!「mailto:」ではなく「mailto」を使用していた
Nigel Crasto

1
5.1.1に取り組んでいます。他のオプションは私にはうまくいきません。
Juanin

1
EXTRA_EMAIL私のために働いていないので使用しましたUri.parse("mailto: " + myEmail)
Pratik Butani

89

遅い答えですが、私は他の人を助けることができる解決策を見つけました:

Javaバージョン

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


Kotlinバージョン

val emailIntent = Intent(Intent.ACTION_SENDTO).apply { 
    data = Uri.parse("mailto:abc@xyz.com")
}
startActivity(Intent.createChooser(emailIntent, "Send feedback"))


これは私の出力でした(Gmail + Inboxのみが提案されています):

私の出力

このソリューションはAndroid Developersサイトから入手しました。


2
私にとってmailto、メールとの間にスペースがないことが重要mailto:abc@xyz.com
でした

それが正解です。
nibbana

36

これは私にとってはうまくいきます:

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..."));

つまり、ACTION_SENDTOアクションではなくアクションを使用しACTION_SENDます。私はいくつかのAndroid 4.4デバイスで試してみましたが、選択ポップアップがメールアプリケーション(メール、Gmail、Yahooメールなど)の表示のみに制限され、メールアドレスと件名がメールに正しく挿入されます。


35

試してください:

intent.setType("message/rfc822");

彼は正しい、私はそれを試して提供している[ドライブ、メール、Gmail、Skype]、これは「正しい答え」であるはずだ
gurbieta

18
MIMEタイプを使用して送信操作を実行することはお勧めできません。基本的に、Androidにタイプのファイルの送信をサポートするアプリのリストを提供するように指示しているためですmessage/rfc822。それがありますいない電子メールの送信と同じ。mailto:代わりにプロトコルを使用してください。これは、電子メールクライアントが実際に理解するものだからです。
Paul Lammertsma 2013年

34

これは、Androidデベロッパー公式ドキュメントによると、メールインテントを送信する適切な方法です

次のコード行をアプリに追加します。

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

オプション:このように、本文と件名を追加します

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

あなたはすでにこの行を追加しましたが、新しいユーザーにとっては良い

intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"youremailaddress@aviparshan.com"});

これは受信者のアドレスになります。つまり、ユーザーがあなた(開発者)に電子メールを送信します。


@ barnacle.mありがとうございます!これは、より単純な方法の1つでもあります。問題は、私の回答では十分な賛成票が得られないことです:(
Avi

1
同じような答えがたくさんあるからですが、これは問題に関する公式のAndroidドキュメントを指摘しています。
barnacle.m

1
メールアドレスを送信できませんでした。このように修正しましたintent.data = Uri.parse( "mailto:somemail@xyz.com")
Hitesh Bisht

18

最後に、最善の方法を考え出す

String to = "test@gmail.com";
String subject= "Hi I am subject";
String body="Hi I am test body";
String mailTo = "mailto:" + to +
        "?&subject=" + Uri.encode(subject) +
        "&body=" + Uri.encode(body);
Intent emailIntent = new Intent(Intent.ACTION_VIEW);
emailIntent.setData(Uri.parse(mailTo));
startActivity(emailIntent);

あなたは素晴らしい男です。
Ashik

問題ありません
Ajay Shrestha

2
完璧に動作します。
Solanki Kamlesh

詳細については、こちらの記事をご覧ください。medium.com
Bruno

うまくいきます、それを維持してください
ジャックズ

15

電子メールクライアントのみが必要な場合android.content.Intent.EXTRA_EMAILは、配列を使用する必要があります。次に例を示します。

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);

3
いいえ、まだ他の多くのアプリが表示されます-それだけではありませんACTION_SENDTO
Dori

10

次のコードは私にとってはうまくいきます。

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"abc@gmailcom"});
Intent mailer = Intent.createChooser(intent, null);
startActivity(mailer);

8

Android開発者のドキュメントから:

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);
    }
}

8

編集:Gmailの新しいバージョンでは動作しなくなった

これは、どのキャラクターでも機能させるために私が当時見つけた唯一の方法でした。

doreamonの答えは、Gmailの新しいバージョンのすべてのキャラクターで機能するため、今のところ正しい方法です。

古い答え:


こちらが私のものです。件名とメッセージ本文のサポート、および完全なutf-8文字のサポートにより、すべてのAndroidバージョンで動作するようです。

public static void email(Context context, String to, String subject, String body) {
    StringBuilder builder = new StringBuilder("mailto:" + Uri.encode(to));
    if (subject != null) {
        builder.append("?subject=" + Uri.encode(Uri.encode(subject)));
        if (body != null) {
            builder.append("&body=" + Uri.encode(Uri.encode(body)));
        }
    }
    String uri = builder.toString();
    Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(uri));
    context.startActivity(intent);
}

1
+1 Uri.encodeが正しい方法です。しかし、なぜそれを件名と本文で2回呼び出すのですか?
Giulio Piancastelli 2013

そのため、自分でエンコードを行うのは悪い考えです。適切なインテントを必要なエクストラと共に使用することをお勧めします。例:stackoverflow.com/a/15022222
Giulio Piancastelli

他のソリューションは一部のメールアプリでのみ正しく機能するため、私にとってはこれが最良の答えです。これは、私がテストしたすべてのメールアプリで動作します。
Egis

7

これらの解決策のどれも私のために働いていませんでした。Lollipopで機能する最小限のソリューションを次に示します。私のデバイスでは、Gmailとネイティブのメールアプリのみが結果の選択リストに表示されます。

Intent emailIntent = new Intent(Intent.ACTION_SENDTO,
                                Uri.parse("mailto:" + Uri.encode(address)));

emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, body);
startActivity(Intent.createChooser(emailIntent, "Send email via..."));

7

すべてのAndroidバージョンで動作します:

String[] TO = {"email@server.com"};
    Uri uri = Uri.parse("mailto:email@server.com")
            .buildUpon()
            .appendQueryParameter("subject", "subject")
            .appendQueryParameter("body", "body")
            .build();
    Intent emailIntent = new Intent(Intent.ACTION_SENDTO, uri);
    emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
    startActivity(Intent.createChooser(emailIntent, "Send mail..."));

あなたの答えは私を助けました。ありがとう
Adnan Khan

5

次のコードは私のために働きました!!

import android.support.v4.app.ShareCompat;
    .
    .
    .
    .
final Intent intent = ShareCompat.IntentBuilder
                        .from(activity)
                        .setType("application/txt")
                        .setSubject(subject)
                        .setText("Hii")
                        .setChooserTitle("Select One")
                        .createChooserIntent()
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET)
                        .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

activity.startActivity(intent);

5

これは私にとって完全にうまくいきます:

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("mailto:" + address));
    startActivity(Intent.createChooser(intent, "E-mail"));

5

インテントがメールアプリのみで処理され、他のテキストメッセージングやソーシャルアプリでは処理されないようにする場合は、ACTION_SENDTOアクションを使用して「mailto:」データスキームを含めます。例えば:

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);
    }
}

これはhttps://developer.android.com/guide/components/intents-common.html#Emailで見つかりました


5

Kotlin誰が見ている場合

val emailArrray:Array<String> = arrayOf("travelagentsupport@kkk.com")
val intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("mailto:") // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, emailArrray)
intent.putExtra(Intent.EXTRA_SUBJECT, "Inquire about travel agent")
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
}

4

これらの回答のほとんどは、添付ファイルを送信していない単純な場合にのみ機能します。私の場合、添付ファイル(ACTION_SEND)または2つの添付ファイル(ACTION_SEND_MULTIPLE)を送信する必要がある場合があります。

だから私はこのスレッドから最善のアプローチを取り、それらを組み合わせました。サポートライブラリを使用していShareCompat.IntentBuilderますが、ACTION_SENDTOが「mailto:」URIに一致するアプリのみを表示しています。このようにして、添付ファイルをサポートするメールアプリのリストのみを取得します。

fun Activity.sendEmail(recipients: List<String>, subject: String, file: Uri, text: String? = null, secondFile: Uri? = null) {
    val originalIntent = createEmailShareIntent(recipients, subject, file, text, secondFile)
    val emailFilterIntent = Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"))
    val originalIntentResults = packageManager.queryIntentActivities(originalIntent, 0)
    val emailFilterIntentResults = packageManager.queryIntentActivities(emailFilterIntent, 0)
    val targetedIntents = originalIntentResults
            .filter { originalResult -> emailFilterIntentResults.any { originalResult.activityInfo.packageName == it.activityInfo.packageName } }
            .map {
                createEmailShareIntent(recipients, subject, file, text, secondFile).apply { `package` = it.activityInfo.packageName }
            }
            .toMutableList()
    val finalIntent = Intent.createChooser(targetedIntents.removeAt(0), R.string.choose_email_app.toText())
    finalIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedIntents.toTypedArray())
    startActivity(finalIntent)
}

private fun Activity.createEmailShareIntent(recipients: List<String>, subject: String, file: Uri, text: String? = null, secondFile: Uri? = null): Intent {
    val builder = ShareCompat.IntentBuilder.from(this)
            .setType("message/rfc822")
            .setEmailTo(recipients.toTypedArray())
            .setStream(file)
            .setSubject(subject)
    if (secondFile != null) {
        builder.addStream(secondFile)
    }
    if (text != null) {
        builder.setText(text)
    }
    return builder.intent
}

これは便利なようです。Javaでそれを取得する可能性はありますか?
カイルハンフェルド2018年

1
KotlinはJavaと非常によく似ています。コピーして貼り付け、いくつかの変更を加えるだけで十分です。
DavidVávra2018年

3

を使用intent.setType("message/rfc822");しても機能しますが、メールを必ずしも処理しない追加のアプリが表示されます(GDriveなど)。使用Intent.ACTION_SENDTOしてはsetType("text/plain")最高ですが、あなたが追加する必要がsetData(Uri.parse("mailto:"))最良の結果(唯一の電子メールアプリケーション)を取得します。完全なコードは次のとおりです。

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setType("text/plain");
intent.setData(Uri.parse("mailto:IT@RMAsoft.NET"));
intent.putExtra(Intent.EXTRA_SUBJECT, "Email from My app");
intent.putExtra(Intent.EXTRA_TEXT, "Place your email message here ...");
startActivity(Intent.createChooser(intent, "Send Email"));

完璧な魂
Daxesh Vekariya

2

Gmailをターゲットにする場合は、次のようにします。インテントは「ACTION_SENDTO」であり、「ACTION_SEND」ではないことに注意してください。Gmailには追加のインテントフィールドは必要ありません。

String uriText =
    "mailto:youremail@gmail.com" + 
    "?subject=" + Uri.encode("your subject line here") + 
    "&body=" + Uri.encode("message body here");

Uri uri = Uri.parse(uriText);

Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(uri);
if (sendIntent.resolveActivity(getPackageManager()) != null) {
   startActivity(Intent.createChooser(sendIntent, "Send message")); 
}

2

KotlinでAdilの回答を更新しています。

val intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("mailto:") // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, Array(1) { "test@email.com" })
intent.putExtra(Intent.EXTRA_SUBJECT, "subject")
if (intent.resolveActivity(packageManager) != null) {
    startActivity(intent)
} else {
    showSnackBar(getString(R.string.no_apps_found_to_send_mail), this)
}

これは、Gmailがアプリ上にある場合でも失敗します。
AndroidDev 2019年

@AndroidDevどのデバイスで問題が発生していますか?
Kishan Solanki

2

以下のコードを使用してください:

                try {

                    String uriText =
                            "mailto:emailid" +
                                    "?subject=" + Uri.encode("Feedback for app") +
                                    "&body=" + Uri.encode(deviceInfo);
                    Uri uri = Uri.parse(uriText);
                    Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
                    emailIntent.setData(uri);
                    startActivity(Intent.createChooser(emailIntent, "Send email using..."));
                } catch (android.content.ActivityNotFoundException ex) {
                    Toast.makeText(ContactUsActivity.this, "No email clients installed.", Toast.LENGTH_SHORT).show();
                }

1

多分あなたはこれを試すべきです: intent.setType("plain/text");

ここで見つけ。アプリで使用しましたが、メールとGmailのオプションのみが表示されます。


2
「プレーン/テキスト」はBluetooth、Skypeなどを示します。Androidマーケットアプリで目的の出力を確認してください。手順は質問に記載されています。
1

1
MIMEタイプを使用して送信操作を実行することは悪い考えです。基本的にAndroidにタイプのファイルの送信をサポートするアプリのリストを提供するように指示しているためplain/text、有効なMIMEタイプでさえないからです。それがありますいない電子メールの送信と同じ。mailto:代わりにプロトコルを使用してください。これは、電子メールクライアントが実際に理解するものだからです。
Paul Lammertsma 2013年

1

電話のメールクライアントでメールを作成します。

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "some@email.address" });
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
intent.putExtra(Intent.EXTRA_TEXT, "mail body");
startActivity(Intent.createChooser(intent, ""));

1

これを使って:

boolean success = EmailIntentBuilder.from(activity)
        .to("support@example.org")
        .cc("developer@example.org")
        .subject("Error report")
        .body(buildErrorReport())
        .start();

ビルドグラドルを使用します。

compile 'de.cketti.mailto:email-intent-builder:1.0.0'

1

これは私が使用するものであり、私にとってはうまくいきます:

//variables
String subject = "Whatever subject you want";
String body = "Whatever text you want to put in the body";
String intentType = "text/html";
String mailToParse = "mailto:";

//start Intent
Intent variableName = new Intent(Intent.ACTION_SENDTO);
variableName.setType(intentType);
variableName.setData(Uri.parse(mailToParse));
variableName.putExtra(Intent.EXTRA_SUBJECT, subject);
variableName.putExtra(Intent.EXTRA_TEXT, body);

startActivity(variableName);

これにより、ユーザーは好みのメールアプリを選択することもできます。これで許可されない唯一のことは、受信者の電子メールアドレスを設定することです。


"2行目にaが欠落しています。
Tim

1

このコードは私のデバイスで動作しています

Intent mIntent = new Intent(Intent.ACTION_SENDTO);
mIntent.setData(Uri.parse("mailto:"));
mIntent.putExtra(Intent.EXTRA_EMAIL  , new String[] {"mahendrarajdhami@gmail.com"});
mIntent.putExtra(Intent.EXTRA_SUBJECT, "");
startActivity(Intent.createChooser(mIntent, "Send Email Using..."));

それは私のデバイスでGmailとメールを開くだけです
Mahen

1
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", email, null));
if (emailIntent.resolveActivity(context.getPackageManager()) != null) {
    context.startActivity(Intent.createChooser(emailIntent, "Send Email..."));
} else {
    Toast.makeText(context, "No apps can perform this action.", Toast.LENGTH_SHORT).show();
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.