インテントを使用してプレーンテキストメールを送信する方法を見つけました。
final Intent emailIntent = new Intent(Android.content.Intent.ACTION_SEND);
emailIntent.setType("text/plain");
emailIntent.putExtra(Android.content.Intent.EXTRA_EMAIL, new
String[]{"[email protected]"});
emailIntent.putExtra(Android.content.Intent.EXTRA_SUBJECT, "Subject");
emailIntent.putExtra(Android.content.Intent.EXTRA_TEXT, "Test");
ただし、HTML形式のテキストを送信する必要があります。
setType( "text/html")の試行は機能しません。
エキストラにSpanned
テキストを渡すことができます。意図がメールを処理するアクティビティ(Gmailやメールアプリなど)のみに解決されるようにするには、ACTION_SENDTO
は、mailtoスキームで始まるUriで始まります。これは、受信者が事前にわからない場合にも機能します。
final Intent shareIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"));
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "The Subject");
shareIntent.putExtra(
Intent.EXTRA_TEXT,
Html.fromHtml(new StringBuilder()
.append("<p><b>Some Content</b></p>")
.append("<small><p>More content</p></small>")
.toString())
);
これはHTMLにとって非常に役立ちましたが、ACTION_SENDTOはそのままでは機能しませんでした-「アクションがサポートされていません」というメッセージが表示されました。ここでバリアントを見つけました:
http://www.coderanch.com/t/520651/Android/Mobile/no-application-perform-action-when
そして、この2つを組み合わせたコードを次に示します。
String mailId="[email protected]";
Intent emailIntent = new Intent(Intent.ACTION_SENDTO,
Uri.fromParts("mailto",mailId, null));
emailIntent.putExtra(Android.content.Intent.EXTRA_SUBJECT, "Subject text here");
// you can use simple text like this
// emailIntent.putExtra(Android.content.Intent.EXTRA_TEXT,"Body text here");
// or get fancy with HTML like this
emailIntent.putExtra(
Intent.EXTRA_TEXT,
Html.fromHtml(new StringBuilder()
.append("<p><b>Some Content</b></p>")
.append("<a>http://www.google.com</a>")
.append("<small><p>More content</p></small>")
.toString())
);
startActivity(Intent.createChooser(emailIntent, "Send email..."));
私は(まだ)Android開発を開始していませんが、EXTRA_TEXTを使用する場合、意図の documentation には、MIMEタイプはtext/plainである必要があります。HTMLを表示する場合は、代わりにEXTRA_STREAMを使用する必要があるようです...
しばらくの間、Gmailアプリ経由でhtmlを送信しようとしていたため、他の誰かが同様の問題を抱えている場合に備えて、私が見つけたものについての洞察を残すことにしました。
何をしたとしても、htmlに太字のテキストを含めることができなかったようです。それから私はOutlookクライアントに切り替えようとしましたが、驚いたことにうまく動作していました。 Htmlマークアップは他の古いデバイスでも機能していましたが、私のものではありませんでした(galaxy s7 API 26)明確に文書化されていない、非常に具体的な方法で。
私のために働いた最後のGmailバージョンは、バージョン6.9.25でした... Nexus 5X API 25エミュレータ(Nougat)で、バージョン7.5.21から動作を停止しました... Nexus 5x API 26エミュレータ(Oreo)で
「EXTRA_HTML_TEXT」の「EXTRA_TEXT」を変更する必要があります
https://developer.Android.com/reference/Android/content/Intent.html#EXTRA_HTML_TEXT