2014-05-24 150 views
1

我正在嘗試使用HTML正文發送電子郵件。 我有一個包含一些有效的HTML的字符串:發送包含HTML內容的電子郵件

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/> 
</head> 
<body>%s</body> 
</html> 

從我被一些HTML取代%S。

然後我嘗試用下面的代碼發送此作爲一個HTML電子郵件:

Intent intent = new Intent(Intent.ACTION_SEND); 
    intent.setType("text/html"); 
    intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); 
    intent.putExtra(Intent.EXTRA_TEXT, myhtmlcontent); 
    context.startActivity(Intent.createChooser(intent, context.getText(R.string.share))); 

但我只收到HTML源代碼以純文本

現在如果我更換

intent.putExtra(Intent.EXTRA_TEXT, myhtmlcontent); 

intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(myhtmlcontent)); 

我收到一封有效的HTML電子郵件,但我的所有圖片已被替換爲某些特殊字符。有沒有辦法保留我的原始HTML內容並將其顯示爲HTML電子郵件?

這裏是我完整的HTML代碼

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
</head> 
<body><p><a href="http://www.dailymars.net/wp-content/uploads/2014/05/Ant-Man.jpg"><img 
     class="aligncenter size-full wp-image-55602" 
     src="http://www.dailymars.net/wp-content/uploads/2014/05/Ant-Man.jpg" alt="Ant-Man" 
     width="720" height="302"/></a></p> 

<p>Les enfants, l&rsquo;heure est grave. Vous l&rsquo;avez compris car vous l&rsquo;avez lu dans le 
    titre de la news (eh ouaip!), <strong>Edgar Wright</strong> ne réalisera finalement pas <em>Ant 
     Man</em>. Alors qu&rsquo;il était rattaché au projet depuis 2006 et qu&rsquo;il en avait 
    écrit le scénario avec <strong>Joe Cornish</strong>, <strong>Marvel </strong>a annoncé que le 
    réal avait quitté le navire. La faute à quoi? Des &laquo;&nbsp;différences créatives&nbsp;&raquo;, 
    soit la meilleure excuse qu&rsquo;Hollywood aie jamais inventé.</p> 

<p><strong>Marvel </strong>a par ailleurs ajouté que le départ de <strong>Wright </strong> ne 
    changerait rien au casting ni à la date de sortie du film et qu&rsquo;un remplaçant, dont le nom 
    devrait bientôt tomber, avait déjà été engagé. Dommage, ça n&rsquo;aura pas la même saveur.</p> 

<p><em>Ant Man</em> avec <strong>Paul Rudd, Michael Douglas, Evangeline Lilly, Corey Stoll, Michael 
    Pena</strong> et <strong>Patrick Wilson.</strong> Mais sans <strong>Edgar Wright</strong>. 
    Sortie en juillet 2015</p> 

<p style="text-align: right;"><em>Source: <a 
     href="http://variety.com/2014/film/news/edgar-wright-leaves-marvels-ant-man-1201190458/">Variety</a></em> 
</p> 
</body> 
</html> 
+0

看看這個:http://stackoverflow.com/a/5216927/812598 – GoRoS

+0

它沒有幫助。我知道顯示圖像將要求用戶接受它。我的問題是,我要麼收到我的html源代碼作爲純文本或我收到的HTML,但圖像被剝離了Html.fromHtml()... – user1026605

回答

0

你做了什麼似乎是正確的。只需將圖像上傳到您的服務器上,並使用< img src =「/ link/to/your/image」/>標記在電子郵件的BODY中爲您的圖像提供實際鏈接。

+1

它沒有幫助。隨着第一個解決方案,我收到我的html源代碼,第二個圖像被剝離 – user1026605

+0

我明白了。問題可能是html /文本。嘗試使用intent.setType(「application/image」)。 參考: http://stackoverflow.com/questions/14457457/android-intent-send-an-email-with-image-attachment – amey91

+0

它不會改變任何東西。仍然收到純HTML源代碼 – user1026605

2

任何Intent的解釋取決於接收器。有很多ACTION_SEND處理程序,包括許多電子郵件應用程序。對於電子郵件應用程序發送的HTML沒有要求與您提供的HTML相同。

特別是,很少(如果有的話)的電子郵件應用程序將支持包含了一些你的HTML中包含結構,如HTML:

  • <meta>
  • class屬性
  • style屬性

這是因爲大多數電子郵件應用程序將使用EditText來允許用戶編輯電子郵件,並且mos t電子郵件應用程序將使用Html.fromHtml()生成Spanned作爲開始文本提供給EditTextHtml.fromHtml()不支持我引用的東西。 This blog post引用了2010年的支持,而AFAIK從那時起並沒有太大變化。因此,如果您堅持使用HTML tags and attributes that work withHtml.fromHtml(),您將最大化HTML發送完好或接近完好的可能性。但是,不能保證它會像電子郵件應用程序作者那樣,而不是你。

+0

是的Html.fromHtml()幾乎爲我工作。這太糟糕了,它將刪除img標籤...我正在尋找一種方法來儘可能地保留它們 – user1026605

+0

@ user1026605:那麼,'src'屬性是您的可能被授予的唯一屬性。即使這需要主機應用程序實現一個'ImageGetter',它可以從Web上檢索圖像,並不是所有的電子郵件應用程序都會這樣做。 – CommonsWare

+0

使用這個答案我理解爲什麼它不可能通過意圖獲取圖像:http://stackoverflow.com/a/6476890/1026605 – user1026605

相關問題