当前位置: 首页 > 面试题库 >

如何将图像添加到电子邮件的HTML正文(Go)

洪景铄
2023-03-14
问题内容

我正在使用Gomail

我正在尝试向自己发送电子邮件。我已经找到了解决方法,但是现在我想在html正文中或作为附件添加图像(没什么关系)。我只需要能够在电子邮件中看到图像即可。

首先,我img src通过POST请求发送,然后将其保存到以下请求中struct

type test_struct struct {
    Test string `json:"image"`
}

然后,我尝试像这样将其附加到电子邮件正文中…

mail := gomail.NewMessage()
mail.SetHeader("From", "XXXX@gmail.com")
mail.SetHeader("To", "XXXX@gmail.com")
mail.SetHeader("Subject", "IMAGE!")

mail.SetBody("text/html", `<img src="cid:t.Test" alt="My Image"/>`)

这不起作用,所以我尝试使用Embed方法 …

mail.Embed(t.Test)

这给了我空白图像,并出现错误的文件名或扩展名。不知道这是否重要,但请注意,src我来自HTML5Canvas。我从画布上获得图像的来源…

localCanvas.toDataURL('image/png');

这就是我保存的值t.Test

buf, err := ioutil.ReadAll(req.Body)
reader := bytes.NewReader(buf)

var t test_struct

err = json.NewDecoder(reader).Decode(&t)

以格式保存的字符串具有t.Test以下格式

data:image/png:base64, iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgA...

如何将其发送到我的电子邮件?到目前为止,文档仅使我了解。


问题答案:

首先,检查t.Test中的数据是否正确(如果包含文件名,路径或需要引用图像的任何内容)

好吧,您有一些选择,首先,如果仅附加图像就可以了,那么您只应该这样做:

mail.Attach("/path/of/your/image/image.png")

但是,如果您需要在消息中使用图像,则可以使用其他方法。

替代项1:使用Embed方法

您必须在文件系统中具有映像,因为该方法是通过这种方式定义的。您必须执行以下操作:

mail.SetBody("text/html", "Image <img src=\"cid:tux.png\"/>")
mail.Embed("/path/of/your/image/tux.png")

您必须使用图片名称,在这种情况下tux.png,当您使用img标记将其添加到html正文中时,必须定义srclikecid:tux.png

替代2:使用base64编码

为此,您需要知道图像文件的mime类型,在我的示例中为png文件,因此mime为image/png。另外,您必须将图像编码为base64。

img, err := ioutil.ReadFile("/path/of/your/image/tux.png")
if err != nil {
    // check errors
}
out := base64.StdEncoding.EncodeToString(img)

或者,如果文件系统中没有该映像,但将其包含在变量([]byte类型)中,则可以将其与EncodeToString

var imageData []byte
// in some part, you load the image data into imageData
out := base64.StdEncoding.EncodeToString(imageData)

你用它像

mail.SetBody("text/html", fmt.Sprintf("Image <img src=\"data:image/png;base64,%s\"/>", out))

因此,当您使用时,如果使用img,您必须在src嵌入图像中设置data:mime_type;base64,image_encoded_base64data:image/png;base64,iVBORw0K...

编辑:

我创建与JSON请求和处理程序的示例实施例



 类似资料:
  • 问题内容: 我想在电子邮件正文中添加图片。我不想将图像附加到电子邮件,但要在电子邮件正文中添加图像。 这个怎么做? 我正在用这个。 要么 然后像这样显示图像 问题答案: 不幸的是,使用Intents不可能做到这一点。 为什么例如粗体文本显示在EditText上,而不是一个形象的原因是StyleSplan 正在实施Parcelable 而ImageSpan 没有。因此,当在新的Activity中检索

  • 问题内容: 我想使用go lang在电子邮件正文中发送图像。从 https://github.com/scorredoira/email 现在,我可以将图像文件作为附件发送,但是我需要在电子邮件正文中发送图像文件。 提前致谢。 问题答案: 您可以使用Gomail(我是作者)。看一下Embed方法,它允许您将图像嵌入到电子邮件正文中:

  • 问题内容: 有没有办法将图像附加到用PHP创建的html格式的电子邮件中? 我们需要确保在发送给可能在阅读电子邮件时无法访问Internet的客户的电子邮件上带有公司徽标(显然,他们可以下载文件)。 问题答案: 尝试使用PEARMail_Mime软件包,该软件包可以为您嵌入图像。 您需要使用addHTMLImage()方法并传递内容ID(cid),这是一个唯一的文本字符串,您还将在img的src属

  • 问题内容: 我正在尝试发送包含嵌入式gif图像的多部分/相关html电子邮件。该电子邮件是使用Oracle PL / SQL生成的。我的尝试失败了,图片显示为红色X(在Outlook 2007和yahoo邮件中) 我已经发送HTML电子邮件已有一段时间了,但是我现在的要求是在电子邮件中使用多个gif图像。我可以将它们存储在我们的一台Web服务器上并仅链接到它们,但是许多用户的电子邮件客户端不会自动

  • 问题内容: 注意:我不想将图像附加到电子邮件 我想在电子邮件正文中显示图片, 我已经尝试了HTML image标签,并且得到了输出,正如您在此中看到的关于如何在电子邮件正文中添加图像的问题一样,我很累。 它对我不起作用,它也给我相同的输出,所以我怀疑是否可以这样做, 我的密码 更新1: 如果我使用该代码,则可以获取文本和图像,但无法在电子邮件正文中看到图像 这是我的代码: 更新2: 我使用了粗体标

  • 我创建了一个带有react和firebase身份验证的应用程序,我希望在注册/登录期间,我只需要输入“用户名”。 “用户名”@mydefaultdomain。通用域名格式