2010-03-30 45 views
16

我已經生成了一個HTML代碼(包含<html><body></body></html>標籤)作爲字符串。現在我想將這個HTML代碼作爲HTML發送給郵件。我的代碼如下。使用Android intent發送HTML郵件

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/html"); 
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
intent.putExtra(Intent.EXTRA_SUBJECT, "I would like to buy the following"); 
intent.putExtra(Intent.EXTRA_TEXT, purchaseOrder()); 
startActivity(Intent.createChooser(intent, "sending mail")); 

其中purchaseOrder()是將具有完整HTML代碼的字符串傳給我的方法。但是,儘管GMail客戶端在我的Nexus1上打開,但它具有包含所有HTML標記的字符串,而不是實際的HTML視圖。我嘗試了以下,但得到錯誤。 GMail墜毀。

intent.putExtra(Intent.EXTRA_STREAM, purchaseOrder()); 
+4

因爲你不能在內置的郵件應用程序,這種格式的郵件Intent方法可能無法實現。 – 2010-03-30 09:50:38

+0

[如何發送HTML電子郵件](http://stackoverflow.com/questions/2007540/how-to-send-html-email) – 2013-03-01 09:23:15

回答

4

對於其他人要做到這一點,使用Android的javamailer作品(我已經做到了)手動發送電子郵件幕後:

http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_%28no_Intents%29_in_Android

+3

它可能需要您知道用戶的電子郵件帳戶用戶名和密碼... – 2014-10-30 16:38:20

+1

是的,但你可以使用自己的企業電子郵件和密碼,以避免需要用戶的信息發送電子郵件 – Eenvincible 2015-06-27 21:21:13

+0

這是如何安全?即使代碼被模糊處理,我仍然可以在代碼中以及strings.xml中搜索字符串,並查找用戶名和密碼。 – 2016-04-20 06:07:03

26

這個工作對我來說:

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

但我已經注意到,內嵌樣式和圖像標籤被忽略了......

+1

這也適用於我,它有點棘手,但它仍然從gmail工作 – mattlary 2011-02-12 20:28:09

+0

這也適用於我,它應該是問題的正確答案。 – zeh 2012-02-03 18:45:27

+0

@安迪科克倫:身體是什麼?它是something.html文件還是其中包含? – 2012-04-02 04:44:16

1

如果我沒看錯你要找的是

Html.fromHtml() 

例如

Html.fromHtml("<a href="www.google.com"> Google</a>"); 

這將使谷歌的超鏈接

+1

不在我的設備... – 2014-11-30 22:58:38

1

這爲我工作Intent.ACTION_SENDTO和我的代碼放在這裏:

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