【问题标题】:Inserting Image With Inline HTML使用内联 HTML 插入图像
【发布时间】:2020-01-09 04:23:33
【问题描述】:

我是 Web API 的新手,如果我遗漏了信息,非常抱歉。我正在尝试从我的 web api 发送带有图像(而不是附件)的电子邮件,但我遇到了内联 html 的问题。

示例(在 WebAPI 控制器中)

message Body = "<p>Here is an image</p>" + Model.Image;

现在这不起作用,因为它显示“System.Byte[]”,所以我的替代方法是用一些内联 html 转换它,例如...

message Body = "<p>Here is an image</p>" + "<img src=\"data:image/gif;base64,@System.Convert.ToBase64String{Model.Image)\" />;

这将返回一个空元素。我究竟做错了什么?如果我猜的话,我没有正确使用引号,但我找不到任何人试图以我的方式插入图像。

站点注释 - 如果我看到从移动应用程序发送的图像内容,我会收到一大串始终相同的文本,无论它是否是不同的图像。我以为我会像 src="data:image/gif;base64," 这样使用它,但我只是在电子邮件中返回了一个长字符串。

【问题讨论】:

  • 我相信在内联html中使用引号的正确方法是\",所以这个问题已经解决了。
  • 这将涉及将图像保存到某个驱动器。但是,我发现大多数电子邮件客户端不支持 base64 图像。所以 不起作用。我需要找到一种不同的方式让图片出现在电子邮件中。

标签: c# html asp.net-mvc


【解决方案1】:

您需要将图像托管在其他地方并使用完整路径。示例:

<img scr="https://static.makeuseof.com/wp-content/uploads/2017/12/test-html-online-670x335.jpg" />

【讨论】:

  • 但是图片已经在API模型中了。图像正在发送并存储到同一控制器中的数据库中。此外,由于语法不匹配,我将无法使用您在控制器中发布的 HTML。我需要将该代码放在引号中,这是我遇到问题的地方。 src 的引号是 /" 还是 '?
【解决方案2】:

大多数电子邮件客户端不显示 base64 图像。我的解决方案是使用以下代码将图像附加到电子邮件中。

        MemoryStream ms = new MemoryStream(Model.Image);
        message.Attachments.Add(new Attachment(ms, "Image.png", "image/png"));

我不需要从字节转换为 base64,因为这是在发送到 API 之前在移动应用上完成的,所以我只是引用了存储在模型中的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2012-08-20
    相关资源
    最近更新 更多