在电子邮件意图android中嵌入html表标记

时间:2014-05-21 04:43:19

标签: android html-email

我正在制定一个概念,我必须在电子邮件正文中嵌入 html table tag 。我尝试了一些代码,它在 2.2和2.3 < / strong>操作系统版本,但相同的代码不适用于最新的操作系统版本,如4.0等。

我也试过了Spannable and Html.fromHtml(),但它也没有用。

以下是我的代码,它适用于2.2和2.3操作系统版本:

//SEND EMAIL
    private void sendEmail(String imageUri) throws WriterException{
        //....................Prepare share email data............................. 
        int itemNumber=0;
        titleBuffer=new StringBuffer();

        titleBuffer.append("<html><body><table border="+"1"+"><tr border="+"0"+"><th>Item number</th>"+
                "<th>Barcode</th>"+"<th>Product name</th>"+"<th>Quantity</th></tr>");
        for(int i=0;i<_productList.size();i++){
            itemNumber=i+1;
            titleBuffer.append("<tr border="+"0"+"><td>"+itemNumber+"</td>"+
                    "<td>"+_productList.get(i).getProductBarcode()+"</td>"+"<td>"+_productList.get(i).getProductName()+"</td>"+
                    "<td>"+_productList.get(i).getProductQuantity()+"</td></tr>");

            /*titleBuffer.append("<tr border="+"0"+"><td>"+itemNumber+"</td>"+
                    "<td>"+_productList.get(i).getProductBarcode()+"</td>"+"<td>"+_productList.get(i).getProductName()+"</td>"+
                    "<td>"+_productList.get(i).getProductQuantity()+"</td>"+"<td>"+
                    "<img src="+"/'data:image/png;base64, "+generateBarcodeImage(GenerateBarcode.encodeAsBitmap(_productList.get(i).getProductBarcode(), 
                            BarcodeFormat.CODE_128, 600, 300))+"/'/></td></tr>");*/
        }

        titleBuffer.append("</table></body></html>");

        SpannedString bar = new SpannedString(titleBuffer.toString());

        if(_productList.size()==0){
            titleBuffer.append("NA");
        }
        //..........................................................................

        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
        emailIntent.setType("text/html");
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,"");
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Shopping List");
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,titleBuffer.toString());
        emailIntent.putExtra(Intent.EXTRA_STREAM, emailImageUri);
        startActivity(Intent.createChooser(emailIntent, "Send mail..."));
    }

还可以找到附带的图像,证明它在2.2和2.3 OS版本中有效。

enter image description here

2 个答案:

答案 0 :(得分:2)

这取决于正在处理它的电子邮件客户端。并非所有电子邮件客户端都支持所有HTML标记.Anast Gmail不支持它。它仅适用于基本标记,例如<b><i>等。它不适用于<img>标记。

请参阅以下帖子以获取更多信息,

Sending html email in android using <table>, etc. - is there really no relatively built-in Intent way?

Android, How to send HTML email and force Android to send it through G-Mail not other applications?

How to send html content with image through android default email client?

答案 1 :(得分:0)

尝试以下代码: -

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())
);

了解更多信息,请参阅以下链接: -

android - How to format the text as table in email body of email client

How to send HTML email

http://blog.iangclifton.com/2010/05/17/sending-html-email-with-android-intent/