web-dev-qa-db-ja.com

HTMLメールを送信する方法

インテントを使用してプレーンテキストメールを送信する方法を見つけました。

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")の試行は機能しません。

35
Denis Palnitsky

エキストラに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())
);
48
antnerves

これは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..."));
3
Andy Weinstein

私は(まだ)Android開発を開始していませんが、EXTRA_TEXTを使用する場合、意図の documentation には、MIMEタイプはtext/plainである必要があります。HTMLを表示する場合は、代わりにEXTRA_STREAMを使用する必要があるようです...

2
Chris Shaffer

しばらくの間、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)で

1
SMGhost

「EXTRA_HTML_TEXT」の「EXTRA_TEXT」を変更する必要があります

https://developer.Android.com/reference/Android/content/Intent.html#EXTRA_HTML_TEXT

0
Rodrigo Bermejo