2013-04-04 33 views
8

我想從我的應用程序發送一個HTML郵件。我知道不是所有的郵件客戶端都允許使用html標籤。 但我發現API中的常量Intent.EXTRA_HTML_TEXT(http://developer.android.com/reference/android/content/Intent.html#EXTRA_HTML_TEXT)。如果應用程序允許發送HTML郵件

我的代碼看起來是這樣,但它始終顯示只是文本,而不是HTML格式文本的所有郵件客戶端使用:

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
intent.putExtra(Intent.EXTRA_TEXT, "Hello World"); 
intent.putExtra(Intent.EXTRA_HTML_TEXT, "<html><body><h1>Hello World</h1></body><html>"); 

intent.setType("text/html"); // intent.setType("plain/text"); 

startActivity(Intent.createChooser(intent, "Choose Email Client:")); 

那麼,是錯誤了嗎?

+0

可能的重複http://stackoverflow.com/questions/2544141/send-html-mail-using-android-intent? rq = 1 – razielsarafan 2013-04-04 15:23:38

+1

不,它不是重複的。在這篇文章中,有一個問題就是如何在特定的郵件客戶端(例如gmail)中發佈html標籤。這對我很好。我需要一個替代解決方案:如果郵件客戶端不支持html標籤(例如gmx),則將意圖設置爲「EXTRA_TEXT」,如果郵件客戶端支持html標籤(例如gmail),則將意圖「EXTRA_HTML_TEXT」。那麼我該如何解決這個問題呢?我的代碼有什麼問題? – owe 2013-04-08 06:00:04

+0

真的沒有人試過這個嗎?我很欣賞任何提示。謝謝 – owe 2013-04-12 05:56:24

回答

4

對不起,不是肯定的答案,因爲它似乎不起作用,至少不是真正普遍和可靠的方式。一些郵件很高興能與這樣的:

String body = "<html>something</html>"; 
intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(body)); 

注意,你不需要新的EXTRA_HTML_TEXT,它的工作原理與老一個爲好。如果這涵蓋了你需要的一切,那麼你可能會好起來的。但是,如果您還想要解決許多其他可能的意圖接收方,例如Facebook,Skype,甚至像Drive或Keep這樣的應用,不幸的是,我找不到完美的解決方案,但我非常想證明是錯誤的。

基本上,我們有三種不同的格式:

String body = "<html>something</html>"; 
Spanned html = Html.fromHtml(body); 
String stripped = html.toString(); 

和兩個可能的接受者:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) 
    intent.putExtra(Intent.EXTRA_HTML_TEXT, ???); 
intent.putExtra(Intent.EXTRA_TEXT, ???); 

我嘗試了所有可能的組合,但在任何這些,會有一些衆所周知的和廣泛使用的應用程序不想玩得很好。要麼我們得到嵌入的HTML標籤,要麼沒有格式,甚至沒有文字...

+1

跟我一樣...有什麼更新? – 2015-01-09 01:54:39