如何在电子邮件正文中显示图像?

2022-09-01 21:19:15

注意:我不想将图片附加到电子邮件

我想在电子邮件正文中显示图像,

我尝试过HTML图像标签,我得到了输出,正如你所看到的,我的问题 如何在电子邮件正文中添加图像,所以我累了。<img src=\"http://url/to/the/image.jpg\">"Html.ImageGetter

它不适合我,它也给了我相同的输出,所以我怀疑是否有可能做到这一点,

我的代码

Intent i = new Intent(Intent.ACTION_SEND);
i.putExtra(Intent.EXTRA_EMAIL,new String[] {"abc@gmail.com"}); 
i.putExtra(Intent.EXTRA_TEXT,
    Html.fromHtml("Hi <img src='http://url/to/the/image.jpg'>",
    imgGetter,
    null));

i.setType("image/png");
startActivity(Intent.createChooser(i,"Email:"));


private ImageGetter imgGetter = new ImageGetter() {

    public Drawable getDrawable(String source) {
        Drawable drawable = null;
            try {
                drawable = getResources().getDrawable(R.drawable.icon);
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
                    drawable.getIntrinsicHeight());
            } catch (Exception e) {
                e.printStackTrace();
                Log.d("Exception thrown",e.getMessage());
            } 
            return drawable;
    }
};

更新 1:如果我使用代码,我能够获得文本和图像,但我无法在电子邮件正文中看到图像ImageGetterTextView

这是我的代码:

TextView t = null;
t = (TextView)findViewById(R.id.textviewdemo);
t.setText(Html.fromHtml("Hi <img src='http://url/to/the/image.jpg'>",
    imgGetter,
    null));

更新 2:我使用了粗体标签和锚点标签,因为我在下面显示这些标签工作正常,但是当我使用img标签时,我可以看到一个方形框,上面写着OBJ

 i.putExtra(Intent.EXTRA_TEXT,Html.fromHtml("<b>Hi</b><a href='http://www.google.com/'>Link</a> <img src='http://url/to/the/image.jpg'>",
        imgGetter,
        null));

答案 1

不幸的是,使用 Intents 无法做到这一点。

例如,粗体文本显示在编辑文本而不是图像中的原因是StyleSplan正在实现Parceable,而ImageSpan则没有。因此,当在新活动中检索Intent.EXTRA_TEXT时,ImageSpan将无法取消拆分,因此不会成为附加到EditText的样式的一部分。

不幸的是,使用其他不通过 Intent 传递数据的方法在这里是不可能的,因为您无法控制接收活动。


答案 2

首先提出两个简单的建议:

  • 关闭 img 标记( 而不是<img src="..." /><img src="...">)
  • 使用而不是i.setType("text/html")i.setType("image/png")

如果这两者都不起作用,也许您可以尝试将图像附加到电子邮件中,然后使用而不是?"cid:ATTACHED_IMAGE_CONTENT_ID""http:URL_TO_IMAGE"

Intent i = new Intent(Intent.ACTION_SEND);
i.putExtra(Intent.EXTRA_EMAIL,new String[] {"abc@gmail.com"}); 
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("http://url/to/the/image.jpg");
i.putExtra(Intent.EXTRA_TEXT,
        Html.fromHtml("Hi <img src='cid:image.jpg' />", //completely guessing on 'image.jpg' here
        imgGetter,
        null));
i.setType("image/png");

请参阅 Apache 电子邮件用户指南中标题为“发送带有嵌入图像的 HTML 格式的电子邮件”的部分

但是,您需要知道附加图像的内容ID,我不确定这是否通过标准 Intent 方法显示出来。也许您可以检查原始电子邮件并确定其命名约定?


推荐