17

アプリケーションからメールを送信したい。G-Mail だけで HTML ベースのメールを送信する必要があります。それぞれに長所と短所がある次の解決策を見つけました。

1) インテント (Intent.ACTION_SEND) を使用します。これは非常に簡単な方法で、自分の本文を HTML 形式で表示できますが、問題は [メールを送信] ボタンをクリックしたときに、Facebook や Google+ などの役に立たない多くのアプリケーションがポップアップ表示され、そのリストに表示しないことです。 . これはそのコードです:

String html = "<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" + "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"MY EMAIL ADDRESS"});
intent.putExtra(Intent.EXTRA_SUBJECT, "subject here");
intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(html));
startActivity(Intent.createChooser(intent, "Send email..."));

ここに画像の説明を入力 ここに画像の説明を入力

2) インテント (Intent.ACTION_SENDTO) を使用する。このようにして、役に立たないアプリケーションをフィルタリングし、メール クライアントだけを表示します。しかし、Gmail クライアントで自分のメールが HTML 形式で表示されません。電子メールを送信すると、HTML 形式で本文を表示するクライアントもあれば、HTML を識別せず、リンクがプレーン テキストのように動作するクライアントもあります。このコードは次のようになります。

String html = "<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" + "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";
Intent send = new Intent(Intent.ACTION_SENDTO);
String uriText = "mailto:MY EMAIL ADDRESS" + "?subject=subject here" + "&body=" + html;
uriText = uriText.replace(" ", "%20");
Uri uri = Uri.parse(uriText);
send.setData(uri);
startActivity(Intent.createChooser(send, "Send mail..."));

ここに画像の説明を入力 ここに画像の説明を入力

3) JavaMail APIを使用してメールを送信すると、アプリケーションが非常に複雑になるため、これまでテストしていませんでした。

あなたの提案は何ですか?私は第一と第二の方法の利点を持つ方法が必要です。ユーザーがボタンをクリックするとGmailクライアントが表示され、クライアントのボディ部分にhtmlコンテンツを表示できます。

任意の提案をいただければ幸いです。ありがとう

======================

アップデート

コード 2 に関する何かが間違っています。コードは次のようになります。

String html = "<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" + "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";
Intent send = new Intent(Intent.ACTION_SENDTO);
String uriText = "mailto:MY EMAIL ADDRESS" + "?subject=subject here" + "&body=" + Html.fromHtml(html);
uriText = uriText.replace(" ", "%20");
Uri uri = Uri.parse(uriText);
send.setData(uri);
startActivity(Intent.createChooser(send, "Send mail..."));

ここに画像の説明を入力

4

4 に答える 4

5

次のことを試してください-

Intent shareIntent = new Intent(Intent.ACTION_SENDTO,Uri.parse("mailto:"));
shareIntent.putExtra(Intent.EXTRA_TEXT,Html.fromHtml(body));
shareIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
startActivity(shareIntent);

これは、電子メールアプリケーションのみを表示します。

于 2012-10-24T16:30:48.760 に答える
2

1 つのアプリケーションのみでインテントを処理する場合は、Intent.createChooser() を削除する必要があります。代わりに、startActivity() を使用します。---> デフォルトのメール クライアントを使用してメールを送信します。設定されていない場合は、そうするように求められます。 ..いつでも変更可能

于 2012-07-12T08:52:47.397 に答える
2

このコードを試してください: Facebook などではなく、メール プロバイダーのみが選択されます。

 String body="<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" +
                      "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";
            final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
            emailIntent.setType("text/html");           
            emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);    
            emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body));
            startActivity(Intent.createChooser(emailIntent, "Email:"));
于 2012-07-12T09:23:09.240 に答える
2

メール アプリケーションのみを取得するには、Intent.setType("message/rfc822") を使用します。

于 2014-05-09T09:47:48.847 に答える